home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
faq
/
medimage.202
< prev
next >
Wrap
Internet Message Format
|
1995-04-20
|
223KB
Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news2.near.net!howland.reston.ans.net!news.sprintlink.net!news.clark.net!rahul.net!a2i!flash.us.com!flash.us.com!not-for-mail
From: dclunie@flash.us.com (David A. Clunie)
Newsgroups: alt.image.medical,comp.protocols.dicom,sci.data.formats,sci.med.informatics,sci.med.radiology,alt.answers,comp.answers,sci.answers,news.answers
Subject: Medical Image Format FAQ, Part 1/8
Followup-To: alt.image.medical
Date: 28 Mar 1995 23:03:04 +0300
Organization: Her Master's Voice
Lines: 661
Approved: news-answers-request@MIT.EDU
Distribution: world
Expires: 28 Apr 1995 00:00:00 GMT
Message-ID: <3l9q1o$djo@flash.ksapax>
Reply-To: dclunie@flash.us.com (David A. Clunie)
NNTP-Posting-Host: flash.ksapax
Summary: This posting contains answers to the most Frequently Asked
Question on alt.image.medical - how do I convert from image
format X from vendor Y to something I can use ? In addition
it contains information about various standard formats.
Xref: senator-bedfellow.mit.edu alt.image.medical:2433 comp.protocols.dicom:634 sci.data.formats:884 sci.med.informatics:1727 sci.med.radiology:1805 alt.answers:8364 comp.answers:10921 sci.answers:2329 news.answers:40884
Archive-name: medical-image-faq/part1
Posting-Frequency: monthly
Last-modified: Sat Feb 18 16:42:58 GMT+0300 1995
Version: 2.02
This message is automatically posted once a month to help readers looking
for information about medical image formats. If you don't want to see this
posting every month, please add the subject line to your kill file.
Contents:
part1 - contains index, general information & standard formats
part2 - contains standard formats (continued)
part3 - contains information about proprietary CT formats
part4 - contains information about proprietary MR formats
part5 - contains information about proprietary other formats
part6 - contains information about hosts & compression
part7 - contains information sources
part8 - contains information sources (continued)
Tools that describe and convert many of the formats described in this document
are available in the dicom3tools package from
"ftp://ftp.rahul.net/pub/dclunie/".
A Mosaic browsable version of this FAQ is available at:
"http://www.rahul.net/dclunie/medical-image-faq/html/".
Html, postscript and text forms of the FAQ are available at:
"ftp://ftp.rahul.net/pub/dclunie/medical-image-faq/".
Many FAQs, including this Listing, are available on the archive site
rtfm.mit.edu in the directory pub/usenet/news.answers. The name under
which a FAQ is archived appears in the Archive-name line at the top of
the article.
There's a mail server on that machine. You send a e-mail message to
mail-server@rtfm.mit.edu containing the keyword "help" (without quotes!)
in the message body. To fetch this particular FAQ send a message with the
following body:
send usenet/news.answers/medical-image-faq/part1
...
send usenet/news.answers/medical-image-faq/part8
Please direct comments or questions and especially contributions to
"dclunie@flash.us.com"
or reply to this article. All unknown formats and test images gratefully
accepted, but please don't email them, rather contact me and we can
arrange to exchange documents or disks or tapes by snail mail.
Changes this issue
Fixed typos in ACR/NEMA codes.
Comment on bad big endian byte order in ACR/NEMA files.
DICOM parts 10,11,12 passed ballot.
Fixed GE site directory.
Added more GE ftp and www sites.
Added GE CT Pace and MR Max formats.
Added GE image format document list and references.
Updated GE Genesis optical format saga and added Evergreen Technologies.
Added 8" floppy vendors.
Added Medical Imaging Technology Associates.
Expanded dicom3tools description.
Update Somatom Plus format.
Changes last issue
Split into 8 smaller parts for News software that baulks on big posts.
Fixed numerous typos and difficulties with converting html to posting.
Visible Human project information.
RSNA WWW server.
New Evergreen Technologies email address.
More Mac and Windows viewer sources.
Dermatology server.
Physics server.
Fully functional 3DVIEWNIX1.1 now available for ftp.
Teleradiology vendors.
An NIH image macro to import ACR/NEMA files.
A few more Genesis hints/updates.
Update SCAR email address.
Ftp site for Linux DICOM CTN software.
Updated HSPNET-L entry.
Updated ADAM entry.
Angiography simulation site.
GE Ultrasound contact.
sci.med.radiology gateway.
Neuroscience Resources List www site.
Radiology history www site.
Updated DeJarnette details.
Updated Papyrus entry.
PET www site.
EurIPACS www site.
ImportAccess Photoshop plugin.
Described SPI in much more detail.
Siemens SPI devices including Somatom Plus, Impact, SP.
Sytec format added.
Siemens DR CT format updated.
ISG/Philips Gyroview comments added.
The next part is table of contents.
Subject: Contents
1. Introduction
1.1 Objective
1.2 Types of Formats
1.3 In Desperation - Quick & Dirty Tricks
2. Standard Formats
2.1 ACR/NEMA 1.0 and 2.0
2.2 ACR/NEMA DICOM 3.0
2.3 Papyrus
2.4 Interfile V3.3
2.5 Qsh
3. Proprietary Formats
3.1 Proprietary Formats - General Information
3.1.1 SPI (Standard Product Interconnect)
3.2 CT - Proprietary Formats
3.2.1 General Electric CT
3.2.1.1 GE CT 9800
3.2.1.1.1 GE CT 9800 Image data
3.2.1.1.2 GE CT 9800 Tape format
3.2.1.1.3 GE CT 9800 Raw data MR
3.2.1.2 GE CT Advantage - Genesis
3.2.1.2.1 GE CT Advantage Image data
3.2.1.2.2 GE CT Advantage Archive format
3.2.1.2.3 GE CT Advantage Raw data
3.2.1.3 GE CT Pace
3.2.1.4 GE CT Sytec
3.2.2 Siemens CT
3.2.2.1 Siemens Somatom DR
3.2.2.2 Siemens Somatom Plus
3.2.2.3 Siemens Somatom AR
3.2.3 Philips CT
3.2.4 Picker CT
3.2.5 Toshiba CT
3.2.6 Hitachi CT
3.2.7 Shimadzu CT
3.2.8 Elscint CT
3.3 MR - Proprietary Formats
3.3.1 General Electric MR
3.3.1.1 GE MR Signa 3.x,4.x
3.3.1.1.1 GE MR Signa 3.x,4.x Image data
3.3.1.1.2 GE MR Signa 3.x,4.x Tape format
3.3.1.1.3 GE MR Signa 3.x,4.x Raw data
3.3.1.2 GE MR Signa 5.x - Genesis
3.3.1.2.1 GE MR Signa 5.x Image data
3.3.1.2.2 GE MR Signa 5.x Archive format
3.3.1.2.3 GE MR Signa 5.x Raw data
3.3.1.3 GE MR Max
3.3.1.4 GE MR Vectra
3.3.2 Siemens MR
3.3.2.1 Siemens Magnetom GBS II
3.3.2.2 Siemens Magnetom SP
3.3.2.3 Siemens Magnetom Impact
3.3.2.4 Siemens Magnetom Vision
3.3.3 Philips MR
3.3.3.1 Philips Gyroscan S5
3.3.3.2 Philips Gyroscan ACS
3.3.3.3 Philips Gyroscan T5
3.3.3.4 Philips Gyroscan NT5 & NT15
3.3.4 Picker MR
3.3.5 Toshiba MR
3.3.6 Hitachi MR
3.3.7 Shimadzu MR
3.3.8 Elscint MR
3.4 Proprietary Workstations
3.4.1 ISG Workstations
3.3.3.1 Gyroview
3.5 Other Proprietary Formats
4. Host Machines
4.1 Data General
4.1.1 Data General Data
4.1.1.1 Data General Integers
4.1.1.2 Data General Floating Point
4.1.2 Data General Operating System
4.1.2.1 Data General RDOS
4.1.2.2 Data General AOS/VS
4.1.3 Data General Network
4.2 Vax
4.2.1 Vax Data
4.2.1.1 Vax Integers
4.2.1.2 Vax Floating Point
4.2.1.3 Vax Strings
4.2.2 Vax Operating System
4.2.2.1 Vax VMS
4.2.2.2 ULTRIX
4.2.2.3 OSF
4.3 Sun - Sun3 68000 and Sun4 Sparc
4.3.1 Sun Data
4.3.1.1 Sun Integers
4.3.1.2 Sun Floating Point
4.3.1.3 Sun Strings
4.3.2 Sun Operating System
5. Compression Schemes
5.1 Reversible Compression
5.2 Irreversible Compression
5.2.1 Perimeter Encoding
6. Getting Connected
6.1 Tapes
6.2 Ethernet
6.3 Serial Ports
7. Sources of Information
7.1 Vendor Contacts
7.2 Relevant FAQ's
7.3 Source Code
7.4 Commercial Offerings
7.5 FTP/WWW sites
7.6 Mailservers
7.7 References
7.8 Organizations and Societies
7.9 Usenet Newsgroups
8. Acknowledgements
The next part is part1 - general information & standard formats.
1. Introduction
1.1 Objective
The goal of this FAQ is to facilitate access to medical images stored
on digital imaging modalities such as CT and MR scanners, and their
accompanying descriptive information. The document is designed particularly for
those who do not have access to the necessary proprietary tools or
descriptions, particularly in those moments when inspiration strikes and one
just can't wait for the local sales person to track down the necessary
authority and go through the cycle of correspondence necessary to get a
non-disclosure agreement in place, by which time interest in the project has
usually faded, and another great research opportunity has passed! It may also
be helpful for those keen to experiment with home-grown PACS-like systems using
their existing equipment, and also for those who still have equipment that is
still useful but so old even the host computer vendor doesn't support it any
more!
There is of course no substitute for the genuine tools or descriptions
from the equipment vendors themselves, and pointers to helpful individuals in
various organizations, as well as names and catalog numbers of various useful
documents, are included here where known.
In addition there are several small companies that specialize in such
connectivity problems that have a good reputation and are well known. Contact
information is provided for them, though I personally have no experience with
their products and am not endorsing them.
Finally, great care has been taken not to include any information that
has been released under non-disclosure agreements. What is included here is the
result of either information freely released by vendors, handy hints from
others working in the field, or in many cases close scrutiny of hex dumps and
experimentation with scanner parameters and study of the effects on the image
files. The intent is to spread hard-earned knowledge gained over many years
amongst those new to the field or a particular piece of equipment, not to
threaten anyone's proprietary interests, or to substitute for the technical
support available from vendors that ranges from free to extortionate, and
excellent to abysmal, depending on who your are dealing with and where in the
world you are located!
Please use this information in the spirit in which is intended, and
where possible contribute whatever you know in order to expand the information
to cover more vendors and equipment.
1.2 Types of Formats
Later sections will deal with the problems of getting the image files
from the modality to the workstation, but for the moment assume the files are
there and need to be deciphered.
Four types of information are generally present in these files:
- image data, which may be unmodified or compressed,
- patient identification and demographics,
- technique information about the exam, series, and slice/image.
Extracting the image information alone is usually straightforward and
is described in 1.3. Dealing with the descriptive information, for example to
make use of the data for dissemination in a PACS environment, or to extract
geometry details in order to combine images into 3D datasets, is more difficult
and requires deeper understanding of how the files are constructed.
There are three basis families of formats that are in popular use:
- fixed format, where layout is identical in each file,
- block format, where the header contains pointers to information,
- tag based format, where each item contains its own length.
The block format is one of the most popular, though in most cases, the
early part of the header contains only a limited number of pointers to large
blocks, the blocks are almost always in the same place and a constant length,
for standard rather than reformatted images at least, and if one doesn't know
the specifics of the layout one can get by assumming a fixed format. I presume
this reflects the intent of the designers to handle future expansion and
revision of the format.
The example par excellence of the tag based format is the ACR/NEMA
style of data stream, which, though never intended as a file format per se has
proven useful as model. See for example the sections dealing with the ACR/NEMA
standards as well as DICOM (whose creators are about to vote on a media
interchange format after all this time) and Papyrus. ACR/NEMA style tags are
described in more detail elsewhere, but each is self-contained and
self-describing (at least if you have the appropriate data dictionary) and
contains its own length, so if you can't interpret it you can skip it! Very
convenient. Most file formats based on this scheme are just concatenated series
of tags, and apart from having to guess the byte order, which is not specified
(unlike TIFF which is a similar deal for those in the "real" imaging world),
and sometimes skip a fixed length but short header, are dead easy to handle.
To identify such a file just do a "strings <file | grep 'ACR-NEMA'" -
if it is such a file, just look through the start of the hex dump until you
start to see the characteristic sequentially ordered pairs of 16 bit words that
identify ACR/NEMA attributes, decide the byte order, et voila, you can pipe it
into any general ACR/NEMA dumping program to see what it contains. If you see
even group tags, they will be described in the standard. If you see odd group
tags then they are vendor specific and you will have to ask the vendor or
correlate them with identification information printed on the film until you
figure out the ones that are important to you.
1.3 In Desperation - Quick & Dirty Tricks
Because radiologists, radiographers, technologists, physicists and
imaging programmers are dedicated long suffering creatures who work long hours
under adverse conditions for little reward, the vendors in their generosity
have seen fit to make life a little easier, by almost universally putting the
image data at the end of the file. Rarely you will see files that are padded
out to fixed record size boundaries (eg. Vax VMS 512 byte records), and
sometimes overlay plane data may be stored after the image data. Furthermore
there is almost always an option at archive time to allow for storage in an
uncompressed and totally unadulterated form. Even in ACR/NEMA the tag for image
pixel data is numerically the highest and hence the last to appear in the
sequence which is guaranteed to be sorted. They could have screwed us up
totally by gratuitously adding variable length blocks of other stuff at the
end, but the only time I have encountered this was on a Siemens Impact with the
ACR/NEMA based SPI format padded out to 512 bytes.
In other words, if an image is 256 by 256, uncompressed, and 12-16 bits
deep (and hence usually, though not always, stored as two bytes per pixel),
then we all know that the file is going to contain 256*256*2=131072 bytes of
pixel data at the end of the file. If the file is say 145408 bytes long, as all
GE Signa 3X/4X files are for example, then you need to skip 14336 bytes of
header before you get to the data. Presume row by row starting with top left
hand corner raster order, try both alternatives for byte order, deal with the
16 to 8 bit windowing problem, and very soon you have your image on the screen
of your workstation.
This technique is so useful, even NIH Image for the Macintosh (an
excellent must-have free program BTW.) provides a raw import tool to do this,
and describes it in the manual using the 14336 byte offset! This tool is
something that is sadly lacking in most commercial image handling programs for
non-medical applications, which can't import images with more than 8 bits per
channel.
Of course you have to live without the identification, demographic and
technique information (other than what can be derived from the file name in
some cases), but for many research and presentation purposes this is quite
adequate.
Occasionally one runs into clever files where four 12 bit words are
packed into three 16 bit words and one goes crazy trying to figure out the
logic of how they are packed. The back of the old ACR/NEMA standard describes
somewhere one way in which this is done. One should still be able to calculate
the length easily enough.
I haven't yet encountered a format that did nasty things like have
strips of rows seperated by padding ... I guess we are lucky that most images
are nice powers of two or even multiples thereof (256,320,512).
Of course the GE CT 9800 uses perimeter encoding even when DPCM
compression is not selected, so this technique won't work.
2. Standard Formats
2.1 ACR/NEMA 1.0 and 2.0
ACR/NEMA Standards Publication No. 300-1985 <- ACR/NEMA 1.0
ACR/NEMA Standards Publication No. 300-1988 <- ACR/NEMA 2.0
ACR/NEMA Standards Publication PS2-1989 <- data compression
The American College of Radiologists (ACR) and the National Electrical
Manufacturers Association (NEMA) recognized some time ago the need for
standards to facilitate multi-vendor connectivity to promote the development of
PACS and what is now referred to as Wide Area Networking. The first such
standard was version 1.0 which was released in 1985 as ACR/NEMA Standards
Publication No. 300-1985, subsequently revised several times, then revised
again and released as version 2.0 in 1988, described in ACR/NEMA Standards
Publication No. 300-1988. There it remained until a radically revised and
reorganized approach, preserving backward compatibility, was released during
1992-1993 as ACR/NEMA Standards Publication PS3, also referred to as DICOM 3.
In the interim, to facilitate the transfer of compressed images,
another standard described in ACR/NEMA Standards Publication PS2-1989, was
released which described various means fo extending standard 300-1985 to handle
compression utilizing a broad range of reversible and irreversible schemes.
Though this part of the standard was never apparently implemented by anyone,
and has been quietly bypassed by those working on DICOM 3 compression, it makes
very interesting reading and is a nice summary of applicable techniques.
What does one need to know about ACR/NEMA 1.0 and 2.0 ? The standards
define a mechanism along the lines of the layered ISO-OSI (Open Systems
Interconnect) model, with physical, transport/network, session, and
presentation and application layers. Unless one actually wants to physically
connect to a device that supports the unique 50 pin point-to-point electrical
interface, then one really only needs to be aware of how ACR/NEMA implements
the presentation and application layers, which are described in terms of a
"message format". This message format is important to many people, not because
anyone seriously wants to connect devices in the limited fashion envisaged by
these early standards, but because many proprietary formats and other de facto
standards have adopted the ACR/NEMA message format and its corresponding data
dictionary and extension mechanisms.
The message format is described in sections 4, 5 and 10 of ACR/NEMA SP
300-1988 which are summarized briefly here. Section 6 describes command
structure which is not really relevant other than that commands are also
structured in the same way as data and consume part of the data dictionary. You
will not encounter command tags in data streams ("messages") encapsulated in
file formats though.
A message consists of a series of "data elements" each of which
contains a piece of information. Each element is described by an "element name"
consisting of a pair of 16 bit unsigned integers ("group number", "data element
number"). The data stream is ordered by ascending group number, and within each
group by ascending data element number. Each element may occur only once in a
message. Even numbered groups describe elements defined by the standard. Odd
numbered groups are available for use by vendors or users, but must conform to
the same structure as standard elements. Following the (group number, data
element number) pair is a length field that is a 32 bit unsigned even integer
that describes the number of bytes from the end of the length field to the
beginning of the next data element. The last part of a data element is its
value, which is defined by the data dictionary to be an ascii (numeric AN or
text AT) or binary value (BI 16 bit or BD 32 bit), which may be single values
or multiple in which case ascii values are delimited by the '\' backslash
character. Odd length ascii values are padded with a space (020H).
For example:
0008 0010 000C 0000 4341 2D52 454E 414D
3120 302E
is data element "Recognition Code" because that is what the dictionary
defines group 0008 element 0010 to be. The dictionary says it is of type AT
(ascii text), has a value multiplicity of single and only enumerated values are
allowed, in this case the ascii string "ACR-NEMA 2.0". It is of length 0000000C
hex or 12 bytes long.
The electrical interface is a 16 bit one, and hence even though 32
binary values are defined to be transmitted least significant word first
(though the order for the 32 bit length is not actually specified), there is no
mention in the standard as to how to encapsulate the message in an 8 bit world,
hence different users and vendors have chosen little or big endian schemes. The
new DICOM standard assumes a default little endian representation which seems
to be the most appropriate considering the old definition for 32 bit words,
which specified that the least significant 16 bit word be transmitted first.
Hence there are three likely possible byte orders that a vendor
interpreting the ACR/NEMA standard in a byte oriented world may have used:
- little endian 16 and 32 bit words, as in DICOM 3,
- big endian 16 and 32 bit words, as in DICOM 3,
- big endian 16 bit words, but the least significant half of
a 32 bit word is sent first (as per ACR/NEMA 2.0).
The choice seems to be made usually on the basis of the native byte
order of integers on the host processor. Most of the formats I have encountered
are one of the first two, but I did encounter one from Philips that used the
last scheme and it drove me crazy for a while, until I appreciated the subtlety
of it ! I call it "Big Bad Endian" format in my implementation that recognizes
it, but that may be a value judgement on my part :)
Notice particularly how this design allows one to parse the message
even if the data dictionary is not complete. Consider an element that has an
unrecognized element name. One cannot interpret the content of the element and
so has to ignore it. One doesn't even know whether it contains binary or ascii
information (this is what DICOM later refers to as "implicit representation".
despite this, the length value allows one to skip to the next element and
proceed.
Over the years there has been much discussion amongst those who favour
such implicit dictionary driven schemes, and those who prefer explicit
representations, including explicit description of the element type (binary or
ascii, etc.) and even the element description itself! Some would prefer the
message to contain something like "RecognitionCode='ACR-NEMA 2.0';" for
example. The nuclear medicine groups have adopted a de facto standard called
Interfile that makes use of ACR/NEMA data elements, but uses such a descriptive
representation. Their argument is that the data stream is much more readable
which is true enough, and more readily extensible.
The groups are organized as follows:
0000 Command
0008 Identifying
0010 Patient
0018 Acquisition
0020 Relationship
0028 Image Presentation
4000 Text
6000-601E (even) Overlay
7FE0 Pixel Data
Some of the more interesting elements are:
(nnnn,0000) BD S Group Length # of bytes in group nnnn
(nnnn,4000) AT M Comments
(0008,0010) AT S Recognition Code # ACR-NEMA 1.0 or 2.0
(0008,0020) AT S Study Date # yyyy.mm.dd
(0008,0021) AT S Series Date # yyyy.mm.dd
(0008,0022) AT S Acquisition Date # yyyy.mm.dd
(0008,0023) AT S Image Date # yyyy.mm.dd
(0008,0030) AT S Study Time # hh.mm.ss.frac
(0008,0031) AT S Series Time # hh.mm.ss.frac
(0008,0032) AT S Acquisition Time # hh.mm.ss.frac
(0008,0033) AT S Image Time # hh.mm.ss.frac
(0008,0060) AT S Modality # CT,NM,MR,DS,DR,US,OT
(0010,0010) AT S Patient Name
(0010,0020) AT S Patient ID
(0010,0030) AT S Patient Birthdate # yyyy.mm.dd
(0010,0040) AT S Patient Sex # M, F, O for other
(0010,1010) AT S Patient Age # xxxD or W or M or Y
(0018,0010) AT M Contrast/Bolus Agent # or NONE
(0018,0030) AT M Radionuclide
(0018,0050) AN S Slice Thickness # mm
(0018,0060) AN M KVP
(0018,0080) AN S Repetition Time # ms
(0018,0081) AN S Echo Time # ms
(0018,0082) AN S Inversion Time # ms
(0018,1120) AN S Gantry Tilt # degrees
(0020,1040) AT S Position Reference # eg. iliac crest
(0020,1040) AN S Slice Location # in mm (signed)
(0028,0010) BI S Rows
(0028,0011) BI S Columns
(0028,0030) AN M Pixel Size # row\col in mm
(0028,0100) BI S Bits Allocated # eg. 12 bit for CT
(0028,0101) BI S Bits Stored # eg. 16 bit
(0028,0102) BI S High Bit # eg. 11
(0028,0102) BI S Pixel Representation # 1 signed, 0 unsigned
(7FE0,0010) BI M Pixel Data # as described by grp 0028
The way in which the pixel data is stored can vary tremendously, though
thankfully most users and vendors use the simple unimaginative scheme that is
shown above, ie. 1 12 bit pixel stored in the low order part of a 16 bit word
with no attempt at packing more compactly. Following are some examples shown in
Appendix E of the standard. Note that when one adds the little/big endian
question the permutations mount!
Bits Allocated = 16
Bits Stored = 12
High Bit = 11
|<------------------ pixel ----------------->|
______________ ______________ ______________ ______________
|XXXXXXXXXXXXXX| | | |
|______________|______________|______________|______________|
15 12 11 8 7 4 3 0
---------------------------
Bits Allocated = 16
Bits Stored = 12
High Bit = 15
|<------------------ pixel ----------------->|
______________ ______________ ______________ ______________
| | | |XXXXXXXXXXXXXX|
|______________|______________|______________|______________|
15 12 11 8 7 4 3 0
---------------------------
Bits Allocated = 12
Bits Stored = 12
High Bit = 11
------ 2 ----->|<------------------ pixel 1 --------------->|
______________ ______________ ______________ ______________
| | | | |
|______________|______________|______________|______________|
15 12 11 8 7 4 3 0
-------------- 3 ------------>|<------------ 2 --------------
______________ ______________ ______________ ______________
| | | | |
|______________|______________|______________|______________|
15 12 11 8 7 4 3 0
|<------------------ pixel 4 --------------->|<----- 3 ------
______________ ______________ ______________ ______________
| | | | |
|______________|______________|______________|______________|
15 12 11 8 7 4 3 0
---------------------------
And so on ... refer to the standard itself for more detail.
The next part is part2 - standard formats (continued).
Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news2.near.net!howland.reston.ans.net!news.sprintlink.net!news.clark.net!rahul.net!a2i!flash.us.com!flash.us.com!not-for-mail
From: dclunie@flash.us.com (David A. Clunie)
Newsgroups: alt.image.medical,comp.protocols.dicom,sci.data.formats,sci.med.informatics,sci.med.radiology,alt.answers,comp.answers,sci.answers,news.answers
Subject: Medical Image Format FAQ, Part 2/8
Followup-To: alt.image.medical
Date: 28 Mar 1995 23:03:12 +0300
Organization: Her Master's Voice
Lines: 415
Approved: news-answers-request@MIT.EDU
Distribution: world
Expires: 28 Apr 1995 00:00:00 GMT
Message-ID: <3l9q20$dk9@flash.ksapax>
Reply-To: dclunie@flash.us.com (David A. Clunie)
NNTP-Posting-Host: flash.ksapax
Summary: This posting contains answers to the most Frequently Asked
Question on alt.image.medical - how do I convert from image
format X from vendor Y to something I can use ? In addition
it contains information about various standard formats.
Xref: senator-bedfellow.mit.edu alt.image.medical:2434 comp.protocols.dicom:635 sci.data.formats:885 sci.med.informatics:1728 sci.med.radiology:1806 alt.answers:8365 comp.answers:10922 sci.answers:2330 news.answers:40885
Archive-name: medical-image-faq/part2
Posting-Frequency: monthly
Last-modified: Sat Feb 18 16:42:58 GMT+0300 1995
Version: 2.02
2.2 ACR/NEMA DICOM 3.0
ACR/NEMA Standards Publications
No. PS 3.1-1992 <- DICOM 3 - Introduction & Overview
No. PS 3.8-1992 <- DICOM 3 - Network Communication Support
No. PS 3.2-1993 <- DICOM 3 - Conformance
No. PS 3.3-1993 <- DICOM 3 - Information Object Definitions
No. PS 3.4-1993 <- DICOM 3 - Service Class Specifications
No. PS 3.5-1993 <- DICOM 3 - Data Structures & Encoding
No. PS 3.6-1993 <- DICOM 3 - Data Dictionary
No. PS 3.7-1993 <- DICOM 3 - Message Exchange
No. PS 3.9-1993 <- DICOM 3 - Point-to-Point Communication
No. PS 3.10-???? <- DICOM 3 - Media Storage & File Format
No. PS 3.11-???? <- DICOM 3 - Media Storage Application Profiles
No. PS 3.12-???? <- DICOM 3 - Media Formats & Physical Media
DICOM (Digital Imaging and Communications in Medicine) standards are of
course the hot topic at every radiological trade show. Unlike previous attempts
at developing a standard, this one seems to have the potential to actually
achieve its objective, which in a nutshell, is to allow vendors to produce a
piece of equipment or software that has a high probability of communicating
with devices from other vendors.
Where DICOM differs substantially from other attempts, is in defining
so called Service-Object Pairs. For instance if a vendor's MR DICOM conformance
statement says that it supports an MR Storage Class as a Service Class
Provider, and another vendor's workstation says that it supports an MR Storage
Class as a Service Class User, and both can connect via TCP/IP over Ethernet,
then the two devices will almost certainly be able to talk to each other once
they are setup with each others network addresses and so on.
The keys to the success of DICOM are the use of standard network
facilities for interconnection (TCP/IP and ISO-OSI), a mechanism of association
establishment that allows for negotiation of how messages are to be
transferred, and an object-oriented specification of Information Objects (ie.
data sets) and Service Classes.
Of course all this makes for a huge and difficult to read standard, but
once the basic concepts are grasped, the standard itself just provides a
detailed reference. From the users' and equipment purchasers' points of view
the important thing is to be able to read and match up the Conformance
Statements from each vendor to see if two pieces of equipment will talk.
Just being able to communicate and transfer information is of course
not sufficient - these are only tools to help construct a total system with
useful functionality. Because a workstation can pull an image off an MRI
scanner doesn't mean it knows when to do it, when the image has become
available, to which patient it belongs, and where it is subsequently archived,
not to mention notifying the Radiology or Hospital Information System (RIS/HIS)
when such a task has been performed. In other words DICOM Conformance does not
guarantee functionality, it only facilitates connectivity.
In otherwords, don't get too carried away with espousing the virtues of
DICOM, demanding it from vendors, and expecting it to be the panacea to create
a useful multi-vendor environment.
Fred Prior (prior@xray.hmc.psu.edu) has come up with the concept of a
User Conformance Statement to be generated by purchasers and to be satisfied by
vendors. The idea is that one describes what one expects and hence gives the
vendor a chance to realistically satisfy the buyer! Of course each such
statement must be tailored to the user's needs, and simply stapling a copy of
Fred's statement to a Request For Proposals is not going to achieve the desired
objective. Caveat empor.
To get more information about DICOM:
- Purchase the standards from NEMA.
- Ftp the final versions of the drafts in electronic form
one of the sites described below.
- Follow the Usenet group comp.protocols.dicom.
- Get a copy of "Understanding DICOM 3.0" $12.50 from Kodak.
- Insist that your existing and potential vendors supply you
with DICOM conformance statements before you upgrade or
purchase, and don't buy until you know what they mean. Don't
take no for an answer!!!!
What is all this doing in an FAQ about medical image formats you ask ?
Well first of all, in many ways DICOM 3.0 will solve future connectivity
problems, if not provide functional solutions to common problems. Hence
actually getting the images from point A to B is going to be easier if everyone
conforms. Furthermore, for those of us with old equipment, interfacing it to
new DICOM conforming equipment is going to be a problem. In otherwords old
network solutions and file formats are going to have to be transformed if they
are going to communicate unidirectionally or bidirectionally with DICOM 3.0
nodes. One is still faced with the same old questions of how does one move the
data and how does one interpret it.
The specifics of the DICOM message format are very similar to the
previous versions of ACR/NEMA on which it is based. The data dictionary is
greatly extended, and certain data elements have been "retired" but can be
ignored gracefully if present. The message itself can now be transmitted as a
byte stream over networks, rather than using a point-to-point paradigm
excusively (though the old point-to-point interface is available). This message
can be encoded in various different Transfer Syntaxes for transmission. When
two devices ("Application Entities" or AE) begin to establish an "Association",
they negotiate an appropriate transfer syntax. They may choose an Explicit
Big-Endian Transfer Syntax in which integers are encoded as big-endian and
where each data element includes a specific field that says "I am an unsigned
16 bit integer" or "I am an ascii floating-point number", or alternatively they
can fall back on the default transfer syntax which every AE must support, the
Implicit Little-Endian Transfer Syntax which is just the same as an old
ACR/NEMA message with the byte order defined once and for all.
This is all very well if you are using DICOM as it was originally
envisaged - talking over a network, negotiating an association, and determining
what Transfer Syntax to use. What if one wants to store a DICOM message in a
file though ? Who is to say which transfer syntax one will use to encode it
offline ? One approach, used for example by the Central Test Node software
produced by Mallinkrodt and used in the RSNA Inforad demonstrations, is just to
store it in the default little-endian implicit syntax and be done with it. This
is obviously not good enough if one is going to be mailing tapes, floppies and
optical disks between sites and vendors though, and hence the DICOM group
decided to define a "Media Storage & File Format" part of the standard, the new
Parts 10, 11 and 12 which have recently passed their ballot and shoul;d be
available in final form from NEMA soon.
Amongst other things, Part 10 defines a generic DICOM file format that
contains a brief header, the "DICOM File Meta Information Header" which
contains a 128 byte preamble (that the user can fill with anything), a 4 byte
DICOM prefix "DICM", then a short DICOM format message that contains newly
defined elements of group 0002 in a specified Transfer Syntax, which uniquely
identify the data set as well as specifying the Transfer Syntax for the rest of
the file. The rest of the message must specify a single SOP instance. The
length of the brief message in the Meta Header is specified in the first data
element as usual, the group length.
Originally the draft of Part 10 specified the default Implicit Value
Representation Little Endian Transfer Syntax as the DICOM File Meta Information
Header Transfer Syntax, which is in keeping with the concept that it is the
default for all other parts of the standard. The final standard has changed
this to Explicit Value Representation Little Endian Transfer Syntax. This seems
like an extremely irritating change to me but I guess purists have prevailed.
So what choices of Transfer Syntax does one have and why all the fuss ?
Well the biggest distinction is between implicit and explicit value
representation which allows for multiple possible representations for a single
element, in theory at least, and perhaps allows one to make more of an unknown
data element than one otherwise could perhaps. Some purists (and Interfile
people) would argue that the element should be identified descriptively, and
there is nothing to stop someone from defining their own private Transfer
Syntax that does just that (what a heretical thought, wash my mouth out with
soap). With regard to the little vs. big endian debate I can't see what the
fuss is about, as it can't really be a serious performance issue.
Perhaps more importantly in the long run, the Transfer Syntax mechanism
provides a means for encapsulating compressed data streams, without having to
deal with the vagaries and mechanics of compression in the standard itself. For
example, if DICOM version 3.0, in addition to the "normal" Transfer Syntaxes, a
series are defined to correspond to each of the Joint Photographic Experts
Group (JPEG) processes. Each one of these Transfer Syntaxes encodes data
elements in the normal way, except for the image pixel data, which is defined
to be encoded as a valid and self-contained JPEG byte stream. Both reversible
and irreversible processes of various types are provided for, without having to
mess with the intricacies of encoding the various tables and parameters that
JPEG processes require. Presumably a display application that supports such a
Transfer Syntax will just chop out the byte stream, pass it to the relevant
JPEG decode, and get an uncompressed image back. More importantly, an archive
server can store the image and retrieve it without ever having to know anything
about how the image pixel data is encoded. Contrast this approach with that
taken by those defining the TIFF (Tagged Image File Format) for general imaging
and page layout applications. In their version 6.0 standard they attempted to
disassemble the JPEG stream into its various components and assign each to a
specific tag. Unfortunately this proved to be unworkable after the standard was
disseminated and they have gone back to the drawing board.
Now one may not like the JPEG standard, but one cannot argue with the
fact that the scheme is workable, and a readily available means of reversible
compression has been incorporated painlessly. How effective a compression
scheme this is remains to be determined, and whether or not the irreversible
modes gain wide acceptance will be dictated by the usual medico-legal paranoia
that prevails in the United States, but the option is there for those who want
to take it up. There is of course no reason why private compression schemes
cannot be readily incorporated using this "encapsulation" mechanism, and to
preserve bandwidth this will undoubtedly occur. This will not compromise
compatibility though, as one can always fall back to a default, uncompressed
Transfer Syntax. The DICOM Working Group IV on compression will undoubtedly
bring out new possibilities. Currently there is a lot of interest in RLE (Run
Length Encoded) compression, particularly from the Ultrasound group.
In order to identify all these various syntaxes, information objects,
and so on, DICOM has adopted the ISO concept of the Unique Identifier (UID)
which is a text string of numbers and periods with a unique root for each
organization that is registered with ISO and various organizations that in turn
register others in a hierarchical fashion. For example 1.2.840.10008.1.2 is
defined as the Implicit VR Little Endian Transfer Syntax. The 1 identifies ISO,
the 2 is the ISO member body branch, the 840 is the specific member body
country code, in this case ANSI, and the 10008 is registered by ANSI to NEMA
for DICOM. UID's are also used to uniqely identify non-DICOM specific things,
such as information objects. These are constructed from a prefix registered to
the supplier or vendor or site, and a unique suffix that may be generated from
say a date and time stamp (which is not to be parsed). For example an instance
of a CT information object might have a UID of
1.2.840.123456.002.999999.940623.170717 where a (presumably US) vendor
registered 123456, and the modality generated a unique suffix based on its
device number, patient hospital id, date and time, which have no other
significance other than to create a unique suffix.
The other important new concept that DICOM introduced was the concept
of Information Objects. In the previous ACR/NEMA standard, though modalities
were identified by a specific data element, and though there were rules about
which data elements were mandatory, conditional or optional in ceratin
settings, the concept was relatively loosely defined. Presumably in order to
provide a mechanism to allow conformance to be specified and hence ensure
interoperability, various Information Objects are defined that are composed of
sets of Modules, each module containing a specific set of data elements that
are present or absent according to specific rules. For example, a CT Image
Information Object contains amongst others, a Patient module, a General
Equipment module, a CT Image module, and an Image Pixel module. An MR Image
Information module would contain all of these except the CT Image module which
would be replaced by an MR Image module. Clearly one needs descriptive
information about a CT image that is different from an MR image, yet the
commonality of the image pixel data and the patient information is recognized
by this model.
Hence, as described earlier, one can define pairs of Information
Objects and Services that operate on such objects (Storage, Query/Retrieve,
etc.) and one gets SOP classes and instances. All very object oriented and
initially confusing perhaps, but it provides a mechanism for specifying
conformance. From the point of view of an interpreters of a DICOM compatible
data stream this means that for a certain instance of an Information Object,
certain information is guaranteed to be in there, which is nice. As a creator
of such a data stream, one must ensure that one follows all the rules to make
sure that all the data elements from all the necessary modules are present.
Having done so one then just throws all the data elements together, sorts them
into ascending order by group and element order, and pumps them out. It is a
shame that the data stream itself doesn't reflect the underlying order in the
Information Objects, but I guess they had to maintain backward compatibility,
hence this little bit of ugliness. This gets worse when one considers how to
put more than one object in a folder inside another object.
At this point I am tempted to include more details of various different
modules, data elements and transfer syntaxes, as well as the TCP/IP mechanism
for connection. However all this information is in the standard itself, drafts
of which are readily available electronically from ftp sites, and in the
interests of brevity I will not succumb to temptation at this time.
2.3 Papyrus
Papyrus is an image file format based on ACR/NEMA version 2.0. It was
developed by the Digital Imaging Unit of the University Hospital of Geneva for
the European project on telemedicine (TELEMED project of the RACE program),
under the leadership of Dr. Osman Ratib (osman@cih.hcuge.ch). The University
Hospital of Geneva uses Papyrus for their hospital-wide PACS.
The medical file format component of Papyrus version 2 extended the
ACR/NEMA format, particularly in order to reference multiple images by placing
folder information referencing ACR-NEMA data sets in a shadow (private) group.
Contributing to the development of DICOM 3, the team are updating their format
to be compatible with the offline file format provisions of the draft Part 10
of DICOM 3 in Papyrus version 3.
The specifications, toolkit and image manipulation software that is
Papyrus aware, Osiris, is available for the Mac, Windows, and Unix/X11/Motif by
ftp from ftp://expasy.hcuge.ch/pub/Osiris.
See also Papyrus and Osiris ftp site.
Further information is available in printed form. Contact
yves@cih.hcuge.ch (Yves Ligier).
2.4 Interfile V3.3
Interfile is a "file format for the exchange of nuclear medicine image
data" created I gather to satisfy the needs of the European COST B2 Project for
the transfer of images of quality control phantoms, and incorporates the AAPM
(American Association of Physicists in Medicine) Report No. 10, and has been
subsequently used for clinical work.
It specifies a file format composed of ascii "key-value" pairs and a
data dictionary of keys. The binary image data may be contained in the same
file as the "administrative information", or in a separate file pointed to by a
"name of data file" key. Image data may be binary integers, IEEE floating point
values, or ascii and the byte order is specified by a key "imagedata byte
order". The order of keys is defined by the Interfile syntax which is more
sophisticated than a simple list of keys, allowing for groups, conditionals and
loops to dictate the order of key-value pairs.
Conformance to the Interfile standard is informally described in terms
of which types of image data types, pixel types, multiple windows, special
Interfile features including curves, and restriction to various maximum
recommended limits.
Interfile is specifically NOT a communications protocol and strictly
deals with offline files. There are efforts to extend Interfile to include
modalities other than nuclear medicine, as well as to keep ACR/NEMA and
Interfile data dictionaries in some kind of harmony.
A sample list of Interfile 3.3 key-value pairs is shown here to give
you some idea of the flavor of the format. The example is culled from part of a
Static study in the Interfile standard document and is not complete:
!INTERFILE :=
!imaging modality :=nucmed
!version of keys :=3.3
data description :=static
patient name :=joe doe
!patient ID :=12345
patient dob :=1968:08:21
patient sex :=M
!study ID :=test
exam type :=test
data compression :=none
!image number :=1
!matrix size [1] :=64
!matrix size [2] :=64
!number format :=signed integer
!number of bytes per pixel :=2
!image duration (sec) :=100
image start time :=10:20: 0
total counts :=8512
!END OF INTERFILE :=
One can see how easy such a format would be to extend, as well as how
it is readable and almost useable without reference to any standard document or
data dictionary.
Undoubtedly ACR/NEMA DICOM 3.0 to Interfile translators will soon
proliferate in view of the fact that many Nuclear Medicine vendors supply
Interfile translators at present.
To get hold of the Interfile 3.3 standard, see the Interfile sources,
Interfile information contacts and Interfile mailing list described later in
this document.
2.5 Qsh
Qsh is a family of programs for manipulating images, and it defines an
intermediate file format. The following information was derived with the help
of one of the authors maguire@it.kth.se(Chip Maguire):
Uses an ASCII key-value-pair (KVP sic.) system, based on the AAPM
Report #10 proposal. This format influenced both Interfile and ACR-NEMA
(DICOM). The file format is referred to as "IMAGE" in some of their articles
(see references). The header and the image data are stored as two separate
files with extensions *.qhd and *.qim respectively.
Qsh is available by anonymous ftp from the Qsh ftp site. This is a
seriously large tar file, including as it does some sample images, and lots of
source code, as well as some post-script documents. Subtrees are available as
separate tar files.
QSH's Motif-based menu system (qmenu) will work with OpenWindows 3.0 if
SUN patch number 100444-54 for SUNOS 4.1.3 rev. A is applied. The patch is
available from ftp://sunsolve1.sun.com (192.9.9.24).
The image access subroutines take the same parameters as the older
/usr/image package from UNC, however, the actual subroutines support the qsh
KVP and image data files.
The frame buffer access subroutines take the same parameters as the
Univ. of Utah software (of the mid. 1970s). The design is based on the use of
a virtual frame buffer which is then implemented via a library for a specific
frame buffer. There exists a version of the the display routines for X11.
Conversions are not supported any longer, instead there is a commercial
product called InterFormat. InterFormat includes a qsh to Interfile conversion,
along with DICOM to qsh, and many others. Information is available from
reddy@nucmed.med.nyu.edu (David Reddy) (see InterFormat in the Sources
section).
[Editorial note: this seems a bit of a shame to me - the old
distribution included lots of handy bits of information, particularly on
driving tape drives. I am advised however that the conversion stuff was pulled
out because people wanted it supported, the authors were worried they were
disclosing things perhaps they ought not to be, and NYU had switched to using
InterFormat themselves anyway. DAC.]
The authors of the qsh package are:
- maguire@it.kth.se (Gerald Q. (Chip) Maguire)
- noz@nucmed.NYU.EDU (Marilyn E Noz)
The following references are helpful in understanding the philosophy
behind the file format, and are included in postscript form in the qsh ftp
distribution:
@Article[noz88b,
Key=<noz88b>,
Author=<M. E. Noz and G. Q. Maguire Jr.>,
Title=<QSH: A Minimal but Highly Portable Image Display
and Processing Toolkit>,
Journal=<Computer Methods and Programs in Biomedicine>,
volume=<27>,
month=<November>,
Year=<1988>,
Pages=<229-240>
]
@Article[maguire89e,
Key=<maguire>,
Author=<G.Q. Maguire Jr., and M.E. Noz>,
Title=<Image Formats: Five Years after the AAPM Standard Format
for Digital Image Interchange>,
Journal=<Medical Physics>,
volume=<16>,
month=<September/October>,
year=<1989>,
pages=<818-823>,
comment=<Also as CUCS-369-88>
]
The next part is part3 - proprietary CT formats.
Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news2.near.net!howland.reston.ans.net!swrinde!cs.utexas.edu!news.sprintlink.net!news.clark.net!rahul.net!a2i!flash.us.com!flash.us.com!not-for-mail
From: dclunie@flash.us.com (David A. Clunie)
Newsgroups: alt.image.medical,comp.protocols.dicom,sci.data.formats,sci.med.informatics,sci.med.radiology,alt.answers,comp.answers,sci.answers,news.answers
Subject: Medical Image Format FAQ, Part 3/8
Followup-To: alt.image.medical
Date: 28 Mar 1995 23:03:22 +0300
Organization: Her Master's Voice
Lines: 1023
Approved: news-answers-request@MIT.EDU
Distribution: world
Expires: 28 Apr 1995 00:00:00 GMT
Message-ID: <3l9q2a$dkq@flash.ksapax>
Reply-To: dclunie@flash.us.com (David A. Clunie)
NNTP-Posting-Host: flash.ksapax
Summary: This posting contains answers to the most Frequently Asked
Question on alt.image.medical - how do I convert from image
format X from vendor Y to something I can use ? In addition
it contains information about various standard formats.
Xref: senator-bedfellow.mit.edu alt.image.medical:2435 comp.protocols.dicom:636 sci.data.formats:886 sci.med.informatics:1729 sci.med.radiology:1807 alt.answers:8366 comp.answers:10923 sci.answers:2331 news.answers:40886
Archive-name: medical-image-faq/part3
Posting-Frequency: monthly
Last-modified: Sat Feb 18 16:42:58 GMT+0300 1995
Version: 2.02
3. Proprietary Formats
3.1 Proprietary Formats - General Information
3.1.1 SPI (Standard Product Interconnect)
Used for files exported from:
- Siemens Somatom Plus
- Siemens Magnetom Impact
- Siemens Magnetom SP
- Siemens Magnetom Vision
- Philips Gyroscan S5
- ? what else ?
SPI is a standard based on the old ACR/NEMA 1 standard, devised I
gather by Siemens and Philips, for use in a PACS environment. Who currently
maintains it and whether or not Sienet PACS systems are based on it, I am not
certain. Many machines in the workplace use it in some shape or form, or can
export files in SPI format. I gather it has been around since 1987 or so, but I
do not yet have access to the reference documents, nor permission to disclose
their contents, so much of the following is guess work or hearsay from Usenet.
Like the ACR/NEMA standard, SPI is designed to define
interconnections between pieces of equipment from the physical level through to
the application level. Where appropriate it utilized relevant parts of
ACR/NEMA. Unlike ACR/NEMA, I gather that SPI is aware of the concept of
networks, objects containing information, the need to uniquely identify
instances of objects, and defines an offline file format. Thus in many ways it
sounds like the missing link between ACR/NEMA 2.0 and DICOM 3.0.
SPI makes use of ACR/NEMA data elements and groups, and in
addition provides "shadow" private odd-numbered groups as dictated by the
ACR/NEMA standard for the purpose of storing additional items of information,
including a means of uniquely identifying objects, as well as allowing for
enumerated values for elements beyond those defined by ACR/NEMA. SPI also
defines a byte order for offline storage of data streams. Integers are stored
in little endian format (least significant byte first).
The private groups mechanism works as follows. For each odd
numbered group (other than 0x0001,0x0003,0x0005,0x0007 and 0xffff), the
elements 0x00nn in the range 0x0010 through 0x00ff contain a single valued
string identification code that identifies the creator of the range of elements
0xnn00 through 0xnnff. Neat eh ? For example:
(0x0009,0x0010) PrivateCreatorDataElement
(0x0009,0x0011) PrivateCreatorDataElement
...
(0x0009,0x1000) DavidElement1
(0x0009,0x1001) DavidElement2
...
(0x0009,0x1100) HarryElement1
(0x0009,0x1101) HarryElement2
You get the idea. The nice thing about this scheme is that each
creator dictionary considers its elements numbered from 0x0000, but these will
be remapped to a block of elements depending on exactly which
PrivateCreatorDataElement is used in the particular data set. Hence multiple
groups from different creators can co-exist happily in the same data set, and
vary in position between data sets.
Note that the group number IS taken into consideration ... a
private element with the same element offset and the same creator will have a
different meaning depending on which group it is in.
SPI uses this concept extensively and defines a large dictionary
with different creators with convoluted names for different modalities and PACS
operations. A few sample elements are described here. Particularly important
are those elements for purposes that were not envisaged when ACR/NEMA 1 was
written, but are necessary to create valid DICOM 3 data sets. Such things as
FlipAngle for MR scans for example. Note that the SPI UID is not the same as a
DICOM UID, but presumably it is unique ! Note also that the creator of "SPI
RELEASE 1" is the same as "SPI Release 1" and "SPI" ... presumably someone
messed up between machines or modalities or manufacturers. For a more extensive
SPI data dictionary see the dicom3tools package from release 0.08 onwards. The
value representation fields are shown here using the modern DICOM equivalents
rather than the older, less specific ACR/NEMA names. The "owner" is what is
used as the string value of the PrivateCreatorDataElement when a range of
elements in a group is claimed.
Element Owner Name VR VM
(0009,0010) SPI Comments LO 1
(0009,0015) SPI UID LO 1
(0009,0010) SIEMENS MED RecognitionCode LO 1
(0011,0010) SPI RELEASE 1 Organ LO 1
(0011,0015) SPI RELEASE 1 AllergyIndication LO 1
(0011,0020) SPI RELEASE 1 Pregnancy LO 1
(0011,0010) SIEMENS CM VA0 CMS RegistrationDate DA 1
(0011,0011) SIEMENS CM VA0 CMS RegistrationTime TM 1
(0011,0023) SIEMENS CM VA0 CMS UsedPatientWeight IS 1
(0013,0020) SIEMENS CM VA0 CMS PatientName LO 1
(0013,0022) SIEMENS CM VA0 CMS PatientId LO 1
(0013,0030) SIEMENS CM VA0 CMS PatientBirthdate LO 1
(0013,0031) SIEMENS CM VA0 CMS PatientWeight DS 1
(0013,0035) SIEMENS CM VA0 CMS PatientSex LO 1
(0013,0040) SIEMENS CM VA0 CMS ProcedureDescription LO 1
(0013,0042) SIEMENS CM VA0 CMS RestDirection LO 1
(0013,0044) SIEMENS CM VA0 CMS PatientPosition LO 1
(0019,0010) SIEMENS CM VA0 CMS NetFrequency DS 1
(0019,0011) SIEMENS CM VA0 ACQU SequenceFileName LO 1
(0019,0021) SIEMENS CT VA0 GEN Exposure DS 1
(0019,0026) SIEMENS CT VA0 GEN GeneratorVoltage DS 1
(0019,0050) SIEMENS MR VA0 GEN NumberOfAverages IS 1
(0019,0060) SIEMENS MR VA0 GEN FlipAngle DS 1
(0019,0012) SIEMENS MR VA0 COAD MagneticFieldStrength DS 1
(0021,0010) SIEMENS MED Zoom DS 1
(0021,0011) SIEMENS MED Target DS 2
(0021,0020) SIEMENS CM VA0 CMS FoV DS 2
(0021,0060) SIEMENS CM VA0 CMS ImagePosition DS 3
(0021,0061) SIEMENS CM VA0 CMS ImageNormal DS 3
(0021,006a) SIEMENS CM VA0 CMS ImageRow DS 3
(0021,006b) SIEMENS CM VA0 CMS ImageColumn DS 3
(0021,0039) SIEMENS MR VA0 GEN SlabThickness DS 1
(0021,0070) SIEMENS MR VA0 GEN NumberOfEchoes IS 1
3.2 CT - Proprietary Formats
3.2.1 General Electric CT
Now we get to the meaty part. After years of being faced with the
problem of either a) hours of detective work, or b) tediously tracking down the
name of the responsible person and exercising a non-disclosure agreement,
General Electric (or Generous Electric as I heard them described the other day)
now really are being generous, as well as sensible, and are making their image
format description documents freely available. For details see the GEMS image
format information contacts section later on. In the meantime, both for
historical completeness, educational purposes, and for those who can't wait for
document to come in the mail, a summary of the relevant formats and
decompression algorithms is provided here.
3.2.1.1 GE CT 9800
References (see the GEMS image format information
contacts section):
- 46-021855 CT 9800 Image Data Format
3.2.1.1.1 GE CT 9800 Image data
- "block format" header
- perimeter encoding
- optional DPCM compression
- Data General host (various)
- RDOS (yuck !)
Almost everyone in this field has at some stage
encountered the dreaded CT 9800 format. The world is divided into two groups of
people ... those who have seen the documents or the critical piece of code in
another program or have been given a handy hint, and those who will never
figure out the format themselves.
Essentially the format fits into the "block
format" described earlier, with pointers to each of the major header
components. Rarely, if ever, does one encounter a file that doesn't have the
same size blocks in the same place, so most people treat it as a fixed layout.
I believe that reformatted images may have another header stored in there, but
I have never tested for it.
The data itself is stored in one of two forms
depending on whether compression is selected or not during archival. In the
uncompressed form, a type of perimeter encoding is used (see later section) in
which for an essentially circular object, the outer parts of a rectangular
image are discarded (and expected to be filled in with a background pixel value
during reconstitution of the image). In the case of the CT9800 then, the image
pixel data is interpreted using a map, which contains an entry for each row of
the image (either 256, 320 or 512 entries) which specifies the length of the
row that is actually stored, centered about the midline of the image. This
obviously saves a lot of space.
If compression is selected on one of the later
model machines, then a form of Differential Pulse Code Modulation is used, in
which advantage is taken of the fact that not all the bits of a 16 bit word are
need to store a CT value. I gather only 12 bits of data are actually
significant, but one can theoretically represent 15 using this scheme.
Essentially, the first 16 bit word is read and used as is. Then another byte is
read. If its most significant bit is set, then the remaining 7 bits represent a
signed difference value relative to the previous pixel. If its most significant
bit is not set, then the difference must have exceeded the range of 7 bits, and
hence the next byte is read to complete a valid 16 bit word (15 bits really)
which is the actual pixel value. The really neat thing about this scheme is
that the same algorithm can be used for compressed or uncompressed data as an
uncompressed stream of words will never have the most significant bit set !
The following piece of C++ code pulled out of
a CT9800 to DICOM translator will give you the general idea. Note that the
perimeter encoding map has already been read in. Note in particular the need to
deal with sign extension of the difference value. Also note that the code
doesn't handle the first pixel specially because its high bit will not be set.
static void
copy9800image(ifstream& instream,DC3ofstream& outstream,
Uint16 resolution,Uint16 *map)
{
unsigned i;
Int16 last_pixel;
last_pixel=0;
for (i=0; i<resolution; ++i) {
unsigned line = map[i];
unsigned start = resolution/2-line;
unsigned end = start+line*2;
unsigned j;
// Pad the first "empty" part of the line ...
for (j=0; j<start; j++) outstream.write16(0);
// Copy the middle of the line (compressed or uncompressed)
while (start<end) {
unsigned char byte;
instream.read(&byte,1);
if (!instream) break;
if (byte & 0x80) {
signed char delta;
if (byte & 0x40) {
delta=byte;
}
else {
delta=byte & 0x3f;
}
last_pixel+=delta;
}
else {
last_pixel=byte << 8;
instream.read(&byte,1);
if (!instream) break;
last_pixel+=byte;
}
outstream.write16((Uint16)last_pixel & 0x0fff);
++start;
}
// Pad the last "empty" part of the line ...
for (j=end; j<resolution; j++) outstream.write16(0);
}
}
What about the rest of the header information
and where is this map stored anyway ? Well, the file is described as a series
of 256 by 16 bit word blocks, blocks numbered from 0, words numbered from 1,
integers are 16 bit words, as follows:
block 0 - global header
word 34 - Int - pointer to global header
word 35 - Int - pointer to exam header
word 36 - Int - pointer to image header
word 37 - Int - pointer to image header2
word 38 - Int - pointer to image map
word 39 - Int - pointer to image data
word 40 - Int - number of blocks in global header
word 41 - Int - number of blocks in exam header
word 42 - Int - number of blocks in image header
word 43 - Int - number of blocks in image header2
word 44 - Int - number of blocks in image map
word 45 - Int - number of blocks in image data
Now almost always the layout is as follows, for
non-reformatted images:
block 0 - global header
block 1 - exam header
block 2 - image header
block 3 - image header 2
block 4 - image map
block 6 - image data
For reformatted images the layout is said to be
different, but I have never seen a description of the contents of the so-called
"arrange header", nor do I know where in the global header the pointer and
length are stored:
block 0 - global header
block 1 - exam header
block 2 - image header
block 3 - image header 2
block 4 - arrange header
block 9 - image map
block 11 - image data
Some of the more important contents of the
various headers are listed here. For more complete information get the
documents from GE or study any one of a number of programs kicking around to
dump the header of this kind of file (see sources later). Integers are 16 bit
words, ascii strings are Fortran style specifications with two characters per
word, and reals are 4 bytes long (see Host machines - Data General):
block 0 - global header
word 17-23 - 7A2 - file name
block 1 - exam header
word 4 - Int - exam number
word 5-11 - 7A2 - exam number
word 12-17 - 6A2 - patient id
word 18-32 - 15A2 - patient name
block 2 - image header
word 11 - Int - position (study) number
word 13 - Int - group type (2=scout,3=standard,4=dynamic)
word 14 - Int - group number
word 47 - Int - scan number
word 48 - Int - image number
word 50 - Int - patient orientation (1=head first,2=feet)
word 51 - Int - AP orientation (1=prone,2=sup,3=lt,4=rt)
word 55 - Int - contrast (0=no,1=yes)
word 93-94 - Real - gantry tilt
word 95-96 - Real - table height mm
word 97-98 - Real - axial table location mm
word 124 - Int - image size (256,320,512) NOT FOR SCOUTS
word 132 - Int - detectors/view - width for scouts
word 137 - Int - compressed views/scan - height for scouts
word 144-145 - Real - X diameter of recon mm
word 146-147 - Real - Y diameter of recon mm
word 155-156 - Real - magnification factor
word 157-158 - Real - X center
word 159-160 - Real - Y center
word 175 - Int - image map used (1=yes,2=no)
word 218 - Int - file type (1=prospective,2=scout,
3=retrospective,4=segmented,
5=screen save,6=plot)
word 219 - Int - data range (number of bits)
word 236 - Int - scout orientation (0=ap,1=lateral)
(the 9800 rotates the scout magically)
It is important to check the filetype and image
map used entries, particularly if trying to read scouts rather just prospective
images. If the map is not in use, it is filled with zeroes and hence if the
flag is not checked a simplistic demapping algorithm will fail. Furthermore the
number of rows and columns in the image is not specified as such. For
prospective images, the imagesize field is valid for both (images are square).
For scouts, one must use the detectors/view field for the width and the
compressed views/scan field as the height.
The filename entry is quite useful. Therein is
stored the RDOS filename of the image, which follows the following convention:
seeeeeppdd.tt
s = originating scan station id
eeeee = exam number
pp = prs number (position related set)
dd = image number
tt = file type
YP = prospective
YV = scout
YR = retrospective
YG = segmented recon
YS = screen save
YL = plot
YF = reformatted
eg. B038500165.YP
Having said this, my GE 9800 stores its scouts
on tape at least with no file extension at all, rather than the .YV that it is
supposed to use.
3.2.1.1.2 GE CT 9800 Tape format
Probably more CT images have been exchanged for
clinical and research purposes using GE 9800 9-track magnetic tapes than any
other means. These things are just ubiquitous, particularly considering the
proliferation of services providing 3D reconstruction and fabrication a few
years ago. Fortunately the format is easy to deal with. The tapes are produced
on a primitive DG tape drive and hence are never more than 1600bpi. The first
thing on the tape is a directory consisting of two 4096 word (8192 byte)
records, then two EOF marks, then 20" of blank tape (because the directory
keeps getting updated) followed by image files each separated by an EOF mark
and finally an additional EOF mark after the last file.
I won't describe the tape directory format here
unless someone specifically asks for it, though it is very simple. I usually
just read everything on the tape and sort the files out later. Remember that
their filenames are stored in the global header.
Don't forget to set the input magnetic tape
record size to 8192 bytes when you are copying these files. If you don't do
this some systems quietly truncate each record to some default size. It took me
a week to figure out why my files were screwed up the first time I tried this
on a DG under AOS/VS (I was desperate and using a networked Signa to read files
off a non-networked 9800).
A simple script to read an entire tape from a
SCSI tape drive /dev/nrst1 under SunOS, which will peek in each image file to
extract the correct filename (simpler than trying to decipher the directory)
looks like
this:
#!/bin/sh
echo "Rewinding"
mt -f /dev/nrst1 rewind
echo "Extracting directory ..."
dd if=/dev/nrst1 ibs=8192 of=TAPEDIR
while dd if=/dev/nrst1 ibs=8192 of=tape.tmp
do
name=`dd if=tape.tmp ibs=16 skip=2 count=1 2>/dev/null`
if [ -z "$name" ]; then break; fi
mv tape.tmp $name
echo "Extracted $name"
done
echo "Rewinding"
mt -f /dev/nrst1 rewind
echo "Finished"
3.2.1.1.2 GE CT 9800 Raw data MR
No idea about this one ... I have never had the
need or seen any documention. Anyone who does or has please fill in this space.
3.2.1.2 GE CT Advantage - Genesis
References (see the GEMS image format information
contacts section):
- 46-021861 Image Data Format
- 46-021863 Optical Disk Raw Partition
- 46-021864 Image Extract Tool
- 46-021865 DAT Archive Format
General Electric now uses the same Sun based architecture
for its Advantage CT and Signa 5X MR family, referred to as Genesis, and hence
the general details of this scheme will be discussed under the GE MR Signa 5.x
- Genesis section. Specifics related to the CT modality will be described here.
3.2.1.2.1 GE CT Advantage Image data
The Image Extract Tool is used in the same way
as on the Signa to extract an image from the database into a single file,
either asis or using the requested compression and packing mode. The Genesis
file contains headers consisting of several components in common with MR and
then a specific CT or MR header. Theroetically, one should be able to use
"/usr/g/insite/bin/ximg -g" to extract a prototype C header file describing the
file format, as on the Signa, though last time I tried this on a High Speed
Advantage this didn't work. Some of the more interesting fields in the CT image
header include:
image header - for CT (1020 bytes long):
26 - float - slice thickness (mm)
30 - short - image matrix size - X
32 - short - image matrix size - Y
34 - float - display field of view - X
38 - float - display field of view - Y
42 - float - image dimension - X
46 - float - image dimension - Y
50 - float - pixel size - X
54 - float - pixel size - Y
58 - char[14] - pixel data ID
72 - char[17] - iv contrast agent
89 - char[17] - oral contrast agent
194 - float - table start Location
198 - float - table end Location
202 - float - table speed (mm/sec)
206 - float - table height
224 - float - gantry tilt (degrees)
3.2.1.2.2 GE CT Advantage Archive format
See the GE MR Signa 5.x Archive format.
3.2.1.2.3 GE CT Advantage Raw data
Again, unknown. Please fill in this space.
3.2.1.3 GE CT Pace
References (see the GEMS image format information
contacts section):
- 46-021856 CT Pace Image Data Format
- 46-021862 MR Max Image Data Format
The Pace is a CT scanner made by Yokogawa Medical
Systems(YMS) in Japan. The format documents I have for it are partially in
Japanese and partially in English, but they get the job done. I have only
tested the following on a few images that were extracted off a nine-track tape,
so the offsets to the image header fields may not be correct in other cases,
but here are "eye-catcher" fields at the start of each header which should be
easy to find. The format seems to be shared with the GE MR Max family.
The images described in the documents have a 512 byte
study header that begins with "!STD" and an image header of 1024 bytes that
begins with "!IMG". In the image that I had to play with, there was a 256 byte
header that I am not familiar with tacked on the front, presumambly something
to do with being a mag tape rather than a disk image. Anyway this meant that
the offset to the study header was 256 bytes, the image header was 768 bytes,
and the compressed image data began at 1792 bytes.
I don't know what kind of host is used on the Pace
though I have seen some cryptic references to "DOS-68K" in the documents.
Regardless, the integers are 16 or 32 bit big-endian. The image data is stored
as SIGNED not unsigned 16 bit values, same as on the Sytec and presumably all
the YMS systems. Most of the useful dates and times are provided as string
values, however there are some dates and times that are 32 bit binary integers.
Though not specified in the docs it seems that the dates are days since an
epoch of "0 Jan 1980" and the times are in milliseconds. Floats are 32 bit IEEE
format, dfined in the Pace documentation as follows:
bit 31 sign (s) (0 is +ve)
bits 30-23 exponent (e)
- unsigned integer
- e == 0 for denormalized numbers
- 0 < e < 255 for normalized numbers
- e == 255 for other reserved operands
bits 22-0 significand (f)
Normalized numbers:
Exponent:
- bias 127
- range 0 < e < 255
Significand:
- interpreted as 1.f
- range 1.0 <= f < 2.0
(-1)^s * 2^(e-127) * 1.f
Denormalized numbers:
Exponent:
- e == 0
- bias 126
Significand:
- interpreted as 0.f
- range f != 0
(-1)^s * 2^(-126) * 0.f
Signed Infinities:
- e == 255
- f == 0
Not-a-numbers:
- e == 255
- f != 0
The image header has a chunk in the middle where
different values are defined for CT and MR. One can use the first byte of the
model number field to distinuish the two modalities. Some of the more important
study and image header values are:
Study header (offset 256 bytes, length 512 bytes):
Offset Type Length Meaning Units or values
0x0 string 4 Eyecatcher !STD
0x6 byte 1 Modality 1=CT,2=MR
0xa string 5 Study Number
0x10 datestring Study Date yyyy/mm/dd
0x1a timestring Study Time hh/mm/ss.xxx
0x26 string 12 Patient ID
0x36 string 12 Patient Name
0x50 string 6 Patient Age yyy;mm
0x5c string 2 PatientSex" 'M ','F '
0xbc string 4 Contrast media 'NO C','+C '
Image header (offset 768 bytes, length 1024 bytes):
Offset Type Length Meaning Units or values
0x0 string 4 Eyecatcher !IMG
0x6 byte 1 Modality 1=CT,2=MR
0xa string 5 Study Number
0x10 string 2 Series Number
0x12 string 2 Acquisition Number
0x14 string 2 Image Number
0x20 datestring Image Date yyyy/mm/dd
0x2a timestring Image Time hh/mm/ss.xxx
0x40 string 2 'H '=Head First,'F '=Feet First
0x42 string 2 'SP'=Supine,'PR'=Prone,
'LL'=Left Lateral Decubitus,
'RL'=Right Lateral Decubitus,'OT'=Other
0x44 string 6 Anatomic location
0x50 string 4 'AX '=Axial,'SAG '=Sagittal,'COR '=Coronal
0x54 float32 Slice position by body coords HF mm
0x58 float32 Slice position by body coords AP mm
0x5c float32 Slice position by body coords LR mm
0x6c string 4 Scan fov cm
0x70 string 4 Scan thickness mm
0xa0 string 4 Contrast media 'NO C','+C '
0x188 float32 Recon center X mm
0x18c float32 Recon center Y mm
0x190 string 4 Recon FOV cm [xx.x]
0x1a0 u_int16 Pixels in X-axis
0x1a2 u_int16 Pixels in Y-axis
0x1a4 float32 Pixel size mm
0x1b0 float32 Mag center X mm
0x1b4 float32 Mag center Y mm
0x1b8 float32 Mag factor
For CT only:
0xc8 string 5 Gantry tilt machine coords degrees
0xe0 string 5 Exposure time ms
0xe6 string 3 Tube current mA
0xea string 5 Exposure mAS
0xf0 string 3 KVP
0xf4 string 2 'CW'=Clockwise,'CC'=CounterClockwise
For MR only:
0xc0 string 5 Tilt ordered by user Axis+/-Angle [xx+/-xx]
0x100 string 2 Echo number
0x102 string 2 Number of echoes
0x104 string 2 Slice number
0x106 string 2 Number of slices
0x108 string 2 Number of excitations
0x10a string 5 Repetition time ms
0x110 string 5 Inversion time ms
0x115 string 5 Echo time ms
0x130 string 4 Magnetic flux density (T)
Unlike the Sytec sample images I had, compression was
used in the Pace images I received. This is a neat scheme that uses both Run
Length Encoding and Differential Pulse Code Modulation. Essentially, each byte
may be a flag value 0x81 which indicates the next byte is a run length of the
current pixel, or a flag value 0x80 which indicates that the current mode
should be toggled between "reference" mode, in which the subsequent 16 bit
words are new pixel values, or "difference" mode, in which case subsequent
bytes are signed differences added to the current pixel value. The initial mode
is "reference" mode. Runs do extended across horizontal line boundaries.
I am not totally clear from the documentation or the
sample images where in the header is the flag to say compression is in use or
not. It is probably bit 5 of the Image Attribute field in offset 0x1ac in the
image header, where a false value specifies DPCM and a true value specifies
uncompressed or "Original" encoding. The docs say this is for optical disk
only, but the compressed image from tape I have has this bit false, which is
correct.
The following piece of code will decode such a
compressed image:
static void
copypaceimage(istream& instream,ostream& outstream,
Uint16 width,Uint16 height)
{
// NB. the exclusive or with 0x8000 makes the signed Pace values unsigned
// which is what the PGM convention is ... just omit the ^0x8000
// everywhere if you want the data left signed.
unsigned i;
Int16 pixel=0;
enum Mode { Difference, Reference } mode = Reference;
for (i=0; i<height*width;) {
unsigned char byte;
instream.read(&byte,1);
if (!instream) break;
if (byte == 0x80) { // Mode switch
if (mode == Difference)
mode=Reference;
else
mode=Difference;
}
else if (byte == 0x81) { // Run length flag
instream.read(&byte,1);
if (!instream) break;
unsigned repeat=byte;
i+=repeat;
while (repeat--) write16little(outstream,pixel^0x8000);
}
else {
if (mode == Difference) {
pixel+=(signed char)byte;
}
else {
pixel=byte<<8;
instream.read(&byte,1);
if (!instream) break;
pixel|=byte;
}
write16little(outstream,pixel^0x8000);
++i;
}
}
if (!instream) cerr << "Premature EOF byte " << i << "\n" << flush;
}
3.2.1.4 GE CT Sytec
I don't have one of these either, and it turns out that
the format is NOT the same as the Pace as GE Milwaukee initially thought. The
format may be shared with the Vectra, but this is not known for certain. I do
have a few sample images and have worked out many of the values in the headers.
The format may be available from Yokogawa in Japan. Milwaukee apparently
doesn't have it.
The host is an MS-DOS clone using the J-DOS operating
system, a Japanese version of DOS to handle 16 bit Kanji characters. Alan
Rowberg tells me it has a 5.25" drive that writes disks that are unreadable by
anything else in the universe.
The images have a header of 3752 bytes and are followed
by 16-bit signed integers. The surround is -1500 which is probably -1500 H.U.
The sample files I had did not use any form of compression.
The data formats are big-endian. Fortuitously the
date/time format is the same as unix ... a 32 bit unsigned integer containing
seconds since an epoch of 00:00:00 GMT 1 Jan 1970. Floats are 32 bit IEEE
format as described in the Pace format.
The head first/feet first and prone/supine fields in the
Sytec file are not known. The sense and identification of corners in the Sytec
sample files was done by guess work, and may be wrong if the samples weren't
scanned head first supine, and the images are not supposed to be looked at from
bottom up in the usual convention.
The header is 3752 bytes long. The known header values
are (byte offsets from 0):
Offset Type Meaning Units or values
7 string ModelNumber
126 string Organization
204 string PatientID
217 string PatientName
328 datetime ExamDateTime
402 string ExamDescription
425 string Modality
444 string ExamStationID
1164 int16 ExamNumber
1166 int16 SeriesNumber
1172 datetime SeriesDate
1176 string SeriesDescription
1206 string SeriesStationID
1224 int16 ScanType # 1=axial,3=scout
1240 string AnatomicalReference
1280 float32 SeriesStartLocation
1288 float32 SeriesEndLocation
2192 u_int16 ImageExamNumber
2194 u_int16 ImageSeriesNumber
2196 u_int16 ImageNumber
2204 datetime ScanDateTime
2208 float32 ScanDuration #? secs
2212 float32 SliceThickness # mm
2216 u_int16 XMatrix
2218 u_int16 YMatrix
2220 float32 FieldOfView # mm
2224 float32 ScoutLength # mm
2228 float32 XDimension # mm
2232 float32 YDimension # mm
2236 float32 XPixelSize # mm
2240 float32 YPixelSize # mm
2310 u_int16 ScoutOrientation # 0=none,1=ap,2=lateral
2316 float32 TablePosition # mm
2320 float32 SliceCenterX # mm
2324 float32 SliceCenterY # mm
2328 float32 SliceCenterZ # mm
2332 float32 NormalVectorX # unitized
2336 float32 NormalVectorY # unitized
2340 float32 NormalVectorZ # unitized
2344 float32 TopRightHandCornerX # mm
2348 float32 TopRightHandCornerY # mm
2352 float32 TopRightHandCornerZ # mm
2356 float32 TopLeftHandCornerX # mm
2360 float32 TopLeftHandCornerY # mm
2364 float32 TopLeftHandCornerZ # mm
2368 float32 BottomLeftHandCornerX # mm
2372 float32 BottomLeftHandCornerY # mm
2376 float32 BottomLeftHandCornerZ # mm
2384 float32 ScoutStartLocation # mm
2388 float32 ScoutEndLocation # mm
2408 int32 GeneratorVoltage # kVP
2412 int32 TubeCurrent # mA
2416 float32 GantryTilt # degrees
2716 float32 XReconOffset # mm
2720 float32 YReconOffset # mm
3256 int32 BitsPerSample
3264 int32 DefaultWindowWidth
3268 int32 DefaultWindowLevel
3.2.2 Siemens CT
3.2.1.1 Siemens Somatom DR
- NOT in SPI format
- fixed format
- files 133120 bytes (for 256 square images)
- image pixel data 256*256*2 little endian
- image pixel offset 2048 bytes
- same for axial images and topograms (scouts)
This description pertains to the DR family, and possibly
also earlier Siemens CT models, but I have no files from these to test.
The files are in fixed format (cf. the early Magnetom
format which is similar, but has block pointers) with three major blocks of
entries:
- binary data - offset 0 - 512 bytes
- text overlay - offset 512 - 960 bytes plus 676 bytes free
- image pixel data - offset 2048 - 131072 bytes
The binary data block is filled with the usual cryptic
enumerated values and useful parameters. Some of the more interesting ones are:
- binary data block:
66 - byte - archive mode (0=raw data,B=256,C=512)
67 - byte - archive mode (0=uncompressed,
2=compressed)
72 - short - matrix size (256 or 512)
130 - byte - scan mode (P=image data,R=raw data)
131 - byte - scan mode (0=tomogram,Q=quick,S=serial,
C=cardiac,T=topogram,X=test,H=chronogram)
132 - short - fov - mm
134 - short - scan time - secs * 10
136 - short - kv
138 - short - dose - maS
140 - short - slice thickness - mm
142 - short - gantry tilt - degrees
144 - short - table position - mm
146 - short - table height - mm
148 - short - scan mode (1=standard(360),
2=quickscan(240),4=topogram)
236 - short - view direction (1=cranial,-1=caudal)
238 - byte - head position (0=head first,
1=feet first)
239 - byte - patient position (0=supine,
1=prone,2=r lat dec,3=l lat dec)
310 - short - window width A
312 - short - window center A
314 - short - window width B
316 - short - window center B
Unfortunately, the patient identification information is
NOT stored in the binary data block, rather one has to extract it from the
image text overlay block, which consists of 960 characters (24 lines of 40
characters WITHOUT carriage control characters) in a fixed format. This is
where what you see overlayed on the filmed images is stored. Some of these
values are duplicates of what is in the binary data block, but things like the
patient name and so on are here and nowhere else :(
0123456789012345678901234567890123456789
0 SOMATOM DR2 ST. ELSEWHERE GEN HOSP
40 999999-9999 JOHN DOE EF2
80 01-JAN-90 FRONT 35B
120 13:31:22 H/SP
160
200 SCAN 60 L
240 E
280 F
320 T
360
400
440
480
520
560
600
640
680
720 TI 5
760 KV 125
800 AS .35
840 SL 2
880 GT 0
920 TP 144
- text overlay block: (some of this is guess work)
0 - char[14] - product
15 - char[25] - hospital name
40 - char[12] - patient number
53 - char[22] - patient name
80 - char[2] - date - dd
83 - char[3] - date - mmm
87 - char[2] - date - yy
120 - char[2] - time - hh
123 - char[2] - time - mm
126 - char[2] - time - ss
156 - char[1] - H=head first,F=feet first
158 - char[2] - SP=supine,PR=prone,
RP=right lateral decubitus,
LP=left lateral decubitus
205 - char[4] - slice number
723 - char[4] - scan time - secs
763 - char[4] - kv
803 - char[4] - dose - AmpS
843 - char[4] - slice thickness - mm
883 - char[4] - gantry tilt - degrees
923 - char[4] - table position - mm
If anyone knows what "EF2" and "35B" stand for I would
love to know - I presume they are something like the filter used, or field of
view or something ?
Also the DR family don't seem to be aware of the concept
of a hierarchy of examination/study and series numbering, which makes it
annoying to try to import them into PACS systems :( Correct me if I am wrong
but they just seem to keep bumping up the slice number for each patient as each
group of scans is done.
3.2.2.2 Siemens Somatom Plus
There seem to be different formats for different versions
of the machine. Either that or some sites have PACS software and some don't or
something. Anyway, one set of files that were sent to me used a fixed format
header much like the DR family, but of different length and with different
fields. I have not yet adequately deciphered this header but will include it
here when I have. This may be what is referred to as the "original header"
stored in the SPI format.
Another site uses a Siemens version of SPI, containing
the following private data elements. Note that there is overlayed data in the
high four bytes of the image pixel data, and that there seems to be a bunch of
padding in the middle. The intent seems to be to store the "original header"
and the image pixel data at accessible, presumably standard locations,
presumably indexed by the byte offsets and lengths described in group 9. This
is a shame because it seems that none of the really interesting CT attributes
have been included in the SPI form, although SPI private tags are available for
lots of CT parameters. I don't have one of these image to test this theory,
someone just sent me an output of the attribute dump.
SPI private tags:
(0009,0010) <SPI RELEASE 1>
(0009,0011) <SIEMENS MED>
(0009,1011) SPI RELEASE 1 UID <049S03CT031995011712072452>
(0009,1040) SPI RELEASE 1 DataObjectSubtype [0x0000]
(0009,1041) SPI RELEASE 1 DataObjectSubtype <IMA TOPO>
(0009,1110) SIEMENS MED RecognitionCode <CT 1.4>
(0009,1130) SIEMENS MED ByteOffsetOfOriginalHeader
(0009,1131) SIEMENS MED LengthOfOriginalHeader
(0009,1140) SIEMENS MED ByteOffsetOfPixelmatrix
(0009,1141) SIEMENS MED LengthOfPixelmatrixInBytes
(0011,0010) <SPI RELEASE 1>
(0021,0010) <SIEMENS MED>
(0021,1010) SIEMENS MED Zoom <01.0>
(0021,1011) SIEMENS MED Target <000.000\00.000>
(0021,1012) SIEMENS MED TubeAngle <0270>
(0021,1020) SIEMENS MED ROIMask [0xf000]
Overlay descriptions (overlays already in image pixel data):
(6000,0040) ROI <G>
(6000,0102) BitPosition [0x000c]
(6000,0102) OverlayLocation [0x7fe0]
(6002,0040) ROI <G>
(6002,0102) BitPosition [0x000d]
(6002,0102) OverlayLocation [0x7fe0]
(6004,0040) ROI <G>
(6004,0102) BitPosition [0x000e]
(6004,0102) OverlayLocation [0x7fe0]
(6006,0040) ROI <G>
(6006,0102) BitPosition [0x000f]
(6006,0102) OverlayLocation [0x7fe0]
More SPI private stuff ... padding and original header ...
(7001,0010) <SIEMENS MED>
(7001,1010) SIEMENS MED Dummy
(7003,0010) <SIEMENS MED>
(7003,1010) SIEMENS MED Header
(7005,0010) <SIEMENS MED>
(7005,1010) SIEMENS MED Dummy
3.2.2.3 Siemens Somatom AR
Unknown, but likely to be SPI unless Siemens have second sourced
this machine like Philips does theirs from Hitachi or GE theirs from Yokogawa !
3.2.3 Philips CT - Big black hole
3.2.4 Picker CT
Grey hole perhaps. This information probably pertains to the IQ
and PQ CT models, though I have no sample images to experiment with yet. I am
told that:
- axial images are 512x512
- pilot images are 1024x1024
- uncompressed images are 12 bits stored in 16 bits
- don't know how to handle compression scheme
- raster order is as usual, by row, TLHC first
- 8k header to be skipped
3.2.5 Toshiba CT - another black hole
3.2.6 Hitachi CT - another black hole
3.2.7 Shimadzu CT - another black hole
3.2.8 Elscint CT - another black hole
The next part is part4 - proprietary MR formats.
Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news2.near.net!howland.reston.ans.net!news.sprintlink.net!news.clark.net!rahul.net!a2i!flash.us.com!flash.us.com!not-for-mail
From: dclunie@flash.us.com (David A. Clunie)
Newsgroups: alt.image.medical,comp.protocols.dicom,sci.data.formats,sci.med.informatics,sci.med.radiology,alt.answers,comp.answers,sci.answers,news.answers
Subject: Medical Image Format FAQ, Part 4/8
Followup-To: alt.image.medical
Date: 28 Mar 1995 23:03:31 +0300
Organization: Her Master's Voice
Lines: 817
Approved: news-answers-request@MIT.EDU
Distribution: world
Expires: 28 Apr 1995 00:00:00 GMT
Message-ID: <3l9q2j$dlb@flash.ksapax>
Reply-To: dclunie@flash.us.com (David A. Clunie)
NNTP-Posting-Host: flash.ksapax
Summary: This posting contains answers to the most Frequently Asked
Question on alt.image.medical - how do I convert from image
format X from vendor Y to something I can use ? In addition
it contains information about various standard formats.
Xref: senator-bedfellow.mit.edu alt.image.medical:2436 comp.protocols.dicom:637 sci.data.formats:887 sci.med.informatics:1730 sci.med.radiology:1808 alt.answers:8367 comp.answers:10924 sci.answers:2332 news.answers:40887
Archive-name: medical-image-faq/part4
Posting-Frequency: monthly
Last-modified: Sat Feb 18 16:42:58 GMT+0300 1995
Version: 2.02
3.3 MR - Proprietary Formats
3.3.1 General Electric MR
3.3.1.1 GE MR Signa 3.x,4.x
References (see the GEMS image format information
contacts section):
- 46-021858 MR Signa 4.x Mag Tape/Image Fmt
3.3.1.1.1 GE MR Signa 3.x,4.x Image data
- "fixed format" header
- image data is not compressed
- image data fixed offset 14336 bytes
- Data General host
- AOS/VS
The image files are of fixed layout, described
here as a series of 256 by 16 bit word blocks (512 bytes), blocks numbered from
0. The headers start at the following block offsets:
block 0 - length 4 blocks - System configuration
block 4 - length 2 blocks - Site customization
block 6 - length 2 blocks - Study header
block 8 - length 2 blocks - Series header
block 10 - length 2 blocks - Image header
block 12 - length 4 blocks - Raw database header
block 16 - length 10 blocks - Pulse sequence description
block 26 - length 2 blocks - Pixel map (? not ever used)
block 28 - length 256 blocks - Image data
As decribed earlier, the header is a fixed
length of 14336 bytes, after which the uncompressed image data starts.
Some of the more important fields are described
here. Integers are 16 bit words (big-endian), ascii strings are Fortran style
specifications with length in bytes, and reals are 4 bytes long (see Host
machines - Data General), word offsets are numbered from 0:
block 6 - study header
word 32 - 5A - Study number
word 39 - 9A - Date of study (dd-mmm-yy)
word 47 - 8A - Time of study (hh:mm:ss)
word 54 - 32A - Patient name
word 70 - 12A - Patient ID
word 78 - 3A - Age xxx years or xxD or W or M or Y
word 80 - 1A - Sex
block 8 - series header
word 31 - 3A - Series number
word 52 - 120A - Series description
word 112 - Int - Series type (0=normal,1=screensave,
2=composite)
word 113 - Int - Coil type (0=head,1=body,2=surface)
word 114 - 16A - Coil name
word 122 - Int - Contrast description
word 138 - Int - Plane type (0=axial,1=sagittal,2=coronal,
3=oblique,4=screen save)
word 147 - Int - Image mode (0=2D single,1=2D multiple,
2=3D volume,3=cine,4=spectroscopy)
word 148 - Int - Field strength (gauss)
word 149 - Int - Pulse sequence (0=memp,1=ir,2=ps,3=rm,
4=rmge,5=gre,6=vemp,7=mpgr,8=mpgrv,
9=mpirs,10=mpiri,11=3d/gre,
12=cine/gre,13=spgr,14=sspf,
15=cin/spgr,16=3d/spgr,17=fse,
18=fve,19=fspgr,20=fgr,21=fmpspgr,
22=fmpgr,23=fmpir,24=probe.s,
25=probe.p)
word 150 - Int - Pulse sequence subtype (0=chopper)
word 151 - Real - Field of view mm
word 153 - Real - Center (3 values;R+L-,A+P-,S+I-)
word 159 - Int - Orientation (0=supine,1=prone,2=Lt,3=Rt)
word 160 - Int - Position (0=head first,1=feet first)
word 161 - 32A - Longitudinal anatomical reference
word 177 - 32A - Vertical anatomical reference
word 199 - Int - Scan matrix X
word 200 - Int - Scan matrix Y
word 201 - Int - Image matrix
block 10 - image header
word 44 - Int - Image number
word 73 - Real - Image location
word 75 - Real - Table position
word 77 - Real - Image thickness
word 79 - Real - Image spacing
word 82 - Real - TR
word 86 - Real - TE
word 88 - Real - TI
word 98 - Int - Number of echos
word 99 - Int - Echo number
word 101 - Int - NEX (if not fractional)
word 146 - Real - NEX
word 146 - Int - Flip angle
3.3.1.1.2 GE MR Signa 3.x,4.x Tape format
3.3.1.1.3 GE MR Signa 3.x,4.x Raw data
3.3.1.2 GE MR Signa 5.x - Genesis
References (see the GEMS image format information
contacts section):
- 46-021861 Image Data Format
- 46-021863 Optical Disk Raw Partition
- 46-021864 Image Extract Tool
- 46-021865 DAT Archive Format
General Electric now uses the same Sun based architecture
for its HighLite Advantage (HLA) and High Speed Advantage (HSA) CT and Signa 5X
MR family, referred to as Genesis. The general details of this scheme will be
discussed here, as well as the description of the MR image header. Specifics
related to the CT modality are described elsewhere.
3.3.1.2.1 GE MR Signa 5.x Image data
Genesis is a system running under SunOS 3.5G
(NOT Solaris) on, believe it or not, a sun3 68000 architecture, not a sun4
sparc.
It would appear that unlike in the previous
Data General based system, the active database is stored as one large
monolithic file in a raw partition, which doesn't make it very easy to extract
single imgaes. Fortunately, GE have saved the day by kindly providing, and
thoroughly documenting in the material that they send you when you ask for the
image file format, an Image Extract Tool that lives in "/usr/g/insite/bin" and
is called "ximg". To see what options are available just type "ximg -h" for
help. Note that ximg's default is to strip out the patient's name and ID number
which is annoying, so don't forget the "-s" flag. The default directory to put
the extracted images in is "/usr/g/insite/tmp". The input names to select
images in silent (non-menu) mode are of the following form:
EeeeeeSsssIiii
eeeee = exam number or "all"
sss = series number or "all"
iii = image number or "all"
and the resultant filenames are the same with an extension of ".MR" or ".CT"
depending. For example:
% /usr/g/insite/bin/ximg -i e673s1i1 -st
% ls -l /usr/g/insite/tmp
E673S1I1.MR
which extracts the selected image in silent mode (-i) without stripping the
identification (-s) in rectangular (-t) mode, ie. not compressed or packed.
One nifty feature that allows you to keep up to
date with the latest version header contents is the "-g" switch which invokes
the GenIncl utility that produces a file called "imageFileOffsets.h" that lists
the type and offsets of each field in the header ! Remarkable, huh ?
How does one get access to the operating system
on the Signa ? Let me count the ways. First, from the Advantage console one can
just call up a command shell from the Utilities menu, or one can invoke the Ftp
option uner Networks and then use the "!" command to ftp, which like in many
Unix tools, spawns a shell. Or from another workstation on the network one can
just telnet or rsh across. If you are connected using an Advantage Windows
workstation you can pull up a command shell by using the right menu button with
the cursor on the desktop. Doing a few "cat /etc/hosts" around the place will
let you know what all the machines are called.
One can also access the console directly from the plasma screen by toggling
"L1-B" on or off.
Once you have extracted them, the Genesis file
contains headers consisting of several components in common with CT and then a
specific CT or MR header. The file is structured as a "block type" header with
a brief "control header" of fixed size, followed by a bunch of optional
headers, some of which reflect internal database structures and are of no
interest, others (such as the suite/exam/series/image) headers that contain
descriptive and identification information, and two that are of importance for
deciphering the pixel data (unpack control & compression control). Some of the
more important fields are described here:
Sun3 Sun Data Types:
- short is 16 bits
- int is 32 bits
- float is 32 bits IEEE
- double is 64 bits IEEE
- byte offsets from 0 start of file
- length ==0 means header absent/empty
control header (offset 0):
0 - int - magic number = 0x494d4746 = "IMGF"
4 - int - byte displacement to pixel data
8 - int - width
12 - int - height
16 - int - depth (bits)
20 - int - compression (0=asis,1=rectangular,2=packed,
3=compressed,4=compressed&packed)
32 - int - background shade to use for non-image
54 - u_short - 16 bit end_around_carry sum of pixels
56 - int - ptr to unique image identifier
60 - int - length of unique image identifier
64 - int - ptr to unpack header
68 - int - length of unpack header
72 - int - ptr to compression header
76 - int - length of compression header
80 - int - ptr to histogram header
84 - int - length of histogram header
88 - int - ptr to text plane
92 - int - length of text plane
96 - int - ptr to graphics plane
100 - int - length of graphics plane
104 - int - ptr to data base header
108 - int - length of data base header
112 - int - value to add to stored pixels
116 - int - ptr to user defined data
120 - int - length of user defined data
124 - int - ptr to suite header
128 - int - length of suite header
132 - int - ptr to exam header
136 - int - length of exam header
140 - int - ptr to series header
144 - int - length of series header
148 - int - ptr to image header
152 - int - length of image header
unpack header:
// used when compression is packed, or compressed & packed
// contains perimeter encoding map ... cf. GE 9800
struct {
short pixels_to_left_of_line;
short pixels_in_stored_line;
} table [height_of_image];
compression header:
Not necessary for decompressing entire image ... rather it
contains seeds for various "strips" of the image to allow
jumping into the compressed pixel data ... see the GE docs.
histogram header:
Contains statistical information for determining optimum
windowing ... see the GE docs and GenIncl produced header
exam header:
0 - char[4] - suite ID
8 - u_short - exam number
84 - char[13] - patient ID
97 - char[25] - patient name
122 - short - patient age
126 - short - patient sex
305 - char[3] - exam type - "MR" or "CT"
series header:
10 - short - series number
84 - char[3] - anatomical reference
92 - char[25] - scan protocol name
image header - for MR (1022 bytes long):
12 - short - image number
26 - float - slice thickness mm
30 - short - matrix size - X
32 - short - matrix size - Y
34 - float - display field of view - X (mm)
38 - float - display field of view - Y (mm)
42 - float - image dimension - X
46 - float - image dimension - Y
50 - float - pixel size - X
54 - float - pixel size - Y
72 - char[17] - iv contrast agent
89 - char[17] - oral contrast agent
194 - int - repetition time(usec)
198 - int - inversion time(usec)
202 - int - echo time(usec)
210 - short - number of echoes
212 - short - echo number
218 - float - NEX
308 - char[33] - pulse sequence name
362 - char[17] - coil name
640 - short - ETL for FSE
So much for the headers. Now how does one deal
with the image data ? The easiest way of course is to save it as "rectangular",
that is not compressed and not packed. If you want to do it the hard way, then
if the data is packed, then unpack it, then if it is compressed, uncompress it.
The packing is a perimeter encoding method like the CT 9800, except that
instead of using a map containing just the width of the stored data, both a
left offset and a width are stored for each row, as described in the "unpack
header". The compression scheme is DPCM again but with a difference ... three
alternative encodings are possible ... a 7 bit difference (one byte), a 14 bit
difference (two bytes), or a flag byte followed by a true 16 bit pixel value
(three bytes). Presumably this scheme was devised to handle a greater dynamic
range than in the CT 9800 scheme when necessary, but produce a similar degree
of compression otherwise.
0 +/- <------ 6 bits ------->
_______________ _______________
| | | | | | | | |
|_______________|_______________|
7 4 3 0
or
1 0 +/- <------------------ 13 bits ---------------------->
_______________ _______________ _______________ _______________
| | | | | | | | | | | | | | | | |
|_______________|_______________|_______________|_______________|
15 12 11 8 7 4 3 0
or
1 1 <----- discarded -----> Then two bytes for 16 bit word
_______________ _______________
| | | | | | | | |
|_______________|_______________|
7 4 3 0
The following piece of C++ code pulled out of
a Genesis to DICOM translator will give you the general idea. Note that the
perimeter encoding map has already been read in (map_left and map_wide). Note
in particular the need to deal with sign extension of the difference values.
Unlike the CT 9800 example earlier, one has to use a separate loop for the
compressed data stream as all 16 bits are potentially in use.
static void
copygenesisimage(ifstream& instream,DC3ofstream& outstream,
Uint16 width,Uint16 height,Uint16 depth,Uint16 compress,
Uint16 *map_left,Uint16 *map_wide)
{
unsigned row;
Int16 last_pixel=0;
for (row=0; row<height; ++row) {
unsigned j;
unsigned start;
unsigned end;
if (compress == 2 || compress == 4) { // packed/compacked
start=map_left[row];
end=start+map_wide[row];
}
else {
start=0;
end=width;
}
// Pad the first "empty" part of the line ...
for (j=0; j<start; j++) outstream.write16(0);
if (compress == 3 || compress == 4) { // compressed/compacked
while (start<end) {
unsigned char byte;
instream.read(&byte,1);
if (!instream) return;
if (byte & 0x80) {
unsigned char byte2;
instream.read(&byte2,1);
if (!instream) return;
if (byte & 0x40) { // next word
instream.read(&byte,1);
if (!instream) return;
last_pixel=
(((Uint16)byte2<<8)+byte);
}
else { // 14 bit delta
if (byte & 0x20) byte|=0xe0;
else byte&=0x1f;
last_pixel+=
(((Int16)byte<<8)+byte2);
}
}
else { // 7 bit delta
if (byte & 0x40) byte|=0xc0;
last_pixel+=(signed char)byte;
}
outstream.write16((Uint16)last_pixel);
++start;
}
}
else {
while (start<end) {
Uint16 u=readUint16(instream);
if (!instream) return;
outstream.write16(u);
++start;
}
}
// Pad the last "empty" part of the line ...
for (j=end; j<width; j++) outstream.write16(0);
}
}
3.3.1.2.2 GE MR Signa 5.x Archive format
GE supply both DAT tape and 5.25" write once
and rewriteable optical disk drives.
The optical drives are made by Pioneer. This is
an unfortunate choice as the media format is incompatible with any other vendor
so you need a Pioneer (DEC 702 ?) drive to read it. The person who made this
choice tells me the fundamental technology seemed more sound on the Pioneer
side than from the other companies, and there were also two sources for the
Pioneer and no one was producing any other interchangeable systems.
Interestingly Siemens made the same choice.
As for the file system, there seem to be two
methods in use. One is to use a monolithic file system on a raw partition. I
haven't seen it but there is now apparently a document from GE available
describing this format "direction 46-021863 CT HLA/HSA MR Signa 5.x Optical
Disk Raw Partition". See the GEMS image format information contacts section.
This is what is used on the MOD.
For the WORM, a different choice was made, to
use a commericially available filesystem product that made the disk look like a
unix filesystem with the ability to store and replace and update on a write
once medium. It is available from DoroTech of France and called DoroFile.
Because it is a commerical product, GE are restrained from disclosing the file
structure.
The formats have been reverse engineered by
Jeffrey Siegel of Evergreen Technologies however, and he can supply you with
software to read both GE and Siemens MOD and WORM formats, on a PC or Mac for
$495. He can sell you the drive as well if necessary for $2800. It can run on a
Mac or on a PC with an Adaptec card and driver. Some driver software for the
Pioneer drive is also available from Corel.
If you have an GE Advantage Windows
workstation, there is an optional MOD/WORM drive and software for that.
As far as the DAT format is concerned, this
format is available though I don't have it (yet). Examining a tape reveals the
following however:
- One file used as a tape label (single 8192 byte record)
- Tape mark
- Series of image files separated by tape marks
There does not seem to be a tape directory per
se.
Each image file is a modification of the format
created by the ximg utility to extract images from the database.
The ximg format is described as a file header
beginning with the magic number "IMGF" and then a short header that contains
byte offsets to the image data, and various suite, exam, series and image
headers.
The DAT images are NOT organized like this, but
do use exactly the same headers and image data layout (and compression
schemes). The difference is in the order of the header.
The first record of the file is 3180 bytes long
and contains:
0-113 suite header (length 114)
114-1137 exam header (length 1024)
1138-2157 series header (length 1020)
2158-3079 image header (length 1022 for mr)
(length 1020 for ct)
3080-3179 zero padding
NB. this record DOES NOT begin with "IMGF" !
The second record of the file is 5208 bytes
long (in my case anyway) and followed by 8192 byte records and a final record
of whatever is left over.
This 5208 byte record contains a "proper"
header in the ximg output format and starts with "IMGF". The subsequent byte
offsets to the image data, compression headers, histogram header etc. are
correct and offset from the beginning of this second record and NOT the start
of the file. Furthermore the pointers to those headers in the first record
(suite, exam, series and image headers) are TOTALLY WRONG and must be ignored
... I don't know how their values are derived but it is not obvious.
I presume that the files were reorganized this
way in order to make it easy for simple utilities to access the demographic
data to index the tape or something. Anyway it is easy to rewrite utilities
that read the ximg format to take all this into account and extract the tags
and the
images.
The image data byte offset (eg. 5204) in the
file header is 4 bytes too short, eg. 3180 + 5204 + 4 -> 3188 which is where
the image data starts.
If you are not familiar with the Genesis ximg
format, on a Signa at least, you can run "/usr/g/insite/bin/ximg -g" to extract
a prototype C header file describing the file format.
3.3.1.2.3 GE MR Signa 5.x Raw data
3.3.1.3 GE MR Max
References (see the GEMS image format information
contacts section):
- 46-021856 CT Pace Image Data Format
- 46-021862 MR Max Image Data Format
I do not have any MR Max images to try this on, but am
told that the format is essentially the same as the CT GE CT Pace, with some
different fields in the image header:
For MR only:
0xc0 string 5 Tilt ordered by user Axis+/-Angle [xx+/-xx]
0x100 string 2 Echo number
0x102 string 2 Number of echoes
0x104 string 2 Slice number
0x106 string 2 Number of slices
0x108 string 2 Number of excitations
0x10a string 5 Repetition time ms
0x110 string 5 Inversion time ms
0x115 string 5 Echo time ms
0x130 string 4 Magnetic flux density (T)
3.3.1.4 GE MR Vectra
Same comments as pertain to the Sytec/Pace entry in the
CT section. A few sample files on a floppy would be much appreciated.
3.3.2 Siemens MR
3.3.2.1 Siemens Magnetom GBS II
- it is NOT in SPI format
- seems to be fixed format
- files 133120 bytes
- image pixel data 256*256*2 little endian
- image pixel offset 4096 bytes
3.3.2.2 Siemens Magnetom SP
- it IS in SPI format (Release 1)
- ACR/NEMA data stream starts immediately
- big-endian byte order
- lots of private groups containing SPI & MR specific
tags, but much useful information in standard tags
- 12 bit allocated data in 16 bits stored, high bit 11
- after ACR/NEMA data, trailing garbage
Similar story as for the Siemens Somatom Plus. Siemens
version of SPI, containing the following private data elements. Note that there
is overlayed data in the high four bytes of the image pixel data, and that
there seems to be a bunch of padding in the middle. The intent seems to be to
store the "original header" and the image pixel data at accessible, presumably
standard locations, presumably indexed by the byte offsets and lengths
described in group 9. This is a shame because it seems that none of the really
interesting MR attributes have been included in the SPI form, although SPI
private tags are available for lots of MR parameters. This is in contrast to
the Siemens Magnetom Impact which contains more interesting SPI tags.
SPI private tags:
(0009,0010) <SPI RELEASE 1>
(0009,0011) <SIEMENS MED>
(0009,1010) SPI RELEASE 1 Comments <SPI VERSION 01.00>
(0009,1015) SPI RELEASE 1 UID <000S00MR001994122719161248>
(0009,1110) SIEMENS MED RecognitionCode <MR 2.0>
(0009,1130) SIEMENS MED ByteOffsetOfOriginalHeader [0x800]
(0009,1131) SIEMENS MED LengthOfOriginalHeader [0x1600]
(0009,1140) SIEMENS MED ByteOffsetOfPixelmatrix [0x2000]
(0009,1141) SIEMENS MED LengthOfPixelmatrixInBytes [0x20000]
(0011,0010) <SPI RELEASE 1>
(0021,0010) <SIEMENS MED>
(0021,1010) SIEMENS MED Zoom <01.0>
(0021,1011) SIEMENS MED Target <>
(0021,1020) SIEMENS MED ROIMask [0x0000]
Overlay descriptions (overlays already in image pixel data):
(6000,0010) OverlayRows [0x0100]
(6000,0011) OverlayColumns [0x0100]
(6000,0040) ROI <R>
(6000,0050) OverlayOrigin [0x5c31,0x2031]
(6000,0060) OverlayCompressionCode <NONE>
(6000,0100) OverlayBitsAllocated [0x0010]
(6000,0102) OverlayBitPosition [0x000c]
(6000,0110) OverlayFormat <RECT>
(6000,0200) OverlayLocation [0x7fe0]
(6002,0010) OverlayRows [0x0100]
(6002,0011) OverlayColumns [0x0100]
(6002,0040) ROI <R>
(6002,0050) OverlayOrigin [0x5c31,0x2031]
(6002,0060) OverlayCompressionCode <NONE>
(6002,0100) OverlayBitsAllocated [0x0010]
(6002,0102) OverlayBitPosition [0x000d]
(6002,0110) OverlayFormat <RECT>
(6002,0200) OverlayLocation [0x7fe0]
(6004,0010) OverlayRows [0x0100]
(6004,0011) OverlayColumns [0x0100]
(6004,0040) ROI <R>
(6004,0050) OverlayOrigin [0x5c31,0x2031]
(6004,0060) OverlayCompressionCode <NONE>
(6004,0100) OverlayBitsAllocated [0x0010]
(6004,0102) OverlayBitPosition [0x000e]
(6004,0110) OverlayFormat <RECT>
(6004,0200) OverlayLocation [0x7fe0]
(6006,0010) OverlayRows [0x0100]
(6006,0011) OverlayColumns [0x0100]
(6006,0040) ROI <R>
(6006,0050) OverlayOrigin [0x5c31,0x2031]
(6006,0060) OverlayCompressionCode <NONE>
(6006,0100) OverlayBitsAllocated [0x0010]
(6006,0102) OverlayBitPosition [0x000f]
(6006,0110) OverlayFormat <RECT>
(6006,0200) OverlayLocation [0x7fe0]
More SPI private stuff ... padding and original header ...
(7001,0010) <SIEMENS MED>
(7001,1010) SIEMENS MED Dummy
(7003,0010) <SIEMENS MED>
(7003,1010) SIEMENS MED Header
(7005,0010) <SIEMENS MED>
(7005,1010) SIEMENS MED Dummy
NB. Siemens VR for OverlayOrigin seems to be wrong. ACR/NEMA says it should be
binary, but [0x5c31,0x2031] translates to a string <1\1> which seems more
plausible!
The models in this family include the SP (which the SPI
describes as a GBS 3 !), the SP/4000 which got a faster Vax, and the new
Vision. I have only examined the files from the SP so far, but they are bog
standard SPI with no surprises, and I have no reason to doubt the same is true
of the later models.
The usual Vax VMS problems apply. Use the console serial
port on the back of the Vax. There is a C compiler supplied so you can compile
the more recent C version of kermit ... although the old Bliss version works
fine. Unlike the Philips, there is no problem with CR delimited file attributes
being set on the binary files. Kermit transfers are glacially slow as always.
3.3.2.3 Siemens Magnetom Impact
- it IS in SPI format (Release 1, based on ACR/NEMA 2.0)
- skip the 1st 128 bytes to get to ACR/NEMA data stream
(may be artifact of transfer process)
- big-endian byte order
- lots of private groups containing SPI & MR specific
tags, but much useful information in standard tags
- 12 bit allocated data in 16 bits stored, high bit 11
- after ACR/NEMA data, file is padded to 512 byte mark
Siemens version of SPI, containing the following private
data elements. More comprehensive attributes than the Siemens Somatom Plus or
Siemens Magnetom SP. There is no overlayed data in the high four bytes of the
image pixel data, and that there is no padding in the middle or "original
header", or byte offsets and lengths described in group 9. Only some of the
more significant elements are described here in the interest of brevity.
Sources for a more comprehensive dictionary are described under SPI.
SPI private tags:
(0009,0010) PrivateCreator <SPI RELEASE 1>
(0009,0012) PrivateCreator <SIEMENS CM VA0 CMS>
(0009,0013) PrivateCreator <SIEMENS CM VA0 LAB>
(0009,1010) SPI RELEASE 1 Comments <SPI VERSION 01.00>
(0009,1015) SPI RELEASE 1 UID <000S00MR001994021614211710>
(0009,1040) SPI RELEASE 1 DataObjectSubtype [0x0000]
(0009,1041) SPI RELEASE 1 DataObjectSubtype <MRUPNONE>
(0009,1210) SIEMENS CM VA0 CMS StorageMode <EXPANDED>
(0009,1212) SIEMENS CM VA0 CMS EvaluationMask [0x0000]
(0009,1226) SIEMENS CM VA0 CMS LastMoveDate <1994.02.16>
(0009,1227) SIEMENS CM VA0 CMS LastMoveTime <13:41:52.000>
(0009,1320) SIEMENS CM VA0 LAB HeaderVersion <VB6>
(0011,0011) PrivateCreator <SIEMENS CM VA0 CMS>
(0011,1110) SIEMENS CM VA0 CMS RegistrationDate <1994.02.16>
(0011,1111) SIEMENS CM VA0 CMS RegistrationTime <113:43:49.000>
(0011,1123) SIEMENS CM VA0 CMS UsedPatientWeight <000050>
(0019,0010) PrivateCreator <SIEMENS CM VA0 CMS>
(0019,0012) PrivateCreator <SIEMENS MR VA0 GEN>
(0019,0014) PrivateCreator <SIEMENS MR VA0 COAD>
(0019,0015) PrivateCreator <SIEMENS CM VA0 ACQU>
(0019,1060) SIEMENS CM VA0 CMS NumberOfDataBytes <310127>
(0019,1220) SIEMENS MR VA0 GEN NominalNumberOfFourierLines <000128>
(0019,1226) SIEMENS MR VA0 GEN NumberOfFourierLinesafterZero <000063>
(0019,1228) SIEMENS MR VA0 GEN FirstMeasuredFourierLine <-00064>
(0019,1230) SIEMENS MR VA0 GEN AcquisitionColumns <000512>
(0019,1231) SIEMENS MR VA0 GEN ReconstructionColumns <000512>
(0019,1250) SIEMENS MR VA0 GEN CurrentNumberOfAverages <000010>
(0019,1260) SIEMENS MR VA0 GEN FlipAngle <00.8000000+E00>
(0019,1290) SIEMENS MR VA0 GEN NumberOfSaturationRegions <000000>
(0019,1294) SIEMENS MR VA0 GEN ImageRotationAngle <00.0000000+E00>
(0019,1412) SIEMENS MR VA0 COAD MagneticFieldStrength <009.500702E-01>
(0019,1456) SIEMENS MR VA0 COAD ReceiverFilterFrequency <500000>
(0021,0010) PrivateCreator <SIEMENS MED>
(0021,0011) PrivateCreator <SIEMENS CM VA0 CMS>
(0021,0013) PrivateCreator <SIEMENS MR VA0 GEN>
(0021,1010) SIEMENS MED Zoom <>
(0021,1011) SIEMENS MED Target <>
(0021,1020) SIEMENS MED ROIMask [0x0]
(0021,1120) SIEMENS CM VA0 CMS FoV <00.2050000+E200\.2050000+E20>
(0021,1122) SIEMENS CM VA0 CMS ImageMagnificationFactor <001.000000E+00>
(0021,1130) SIEMENS CM VA0 CMS ViewDirection <HEAD>
(0021,1132) SIEMENS CM VA0 CMS RestDirection <HEAD>
(0021,1160) SIEMENS CM VA0 CMS ImagePosition <000.000000E+00\.\.>
(0021,1161) SIEMENS CM VA0 CMS ImageNormal <-00.000000E+00\.\.>
(0021,1163) SIEMENS CM VA0 CMS ImageDistance <002.787480E+01>
(0021,116a) SIEMENS CM VA0 CMS ImageRow <001.000000E+00\.\.>
(0021,116b) SIEMENS CM VA0 CMS ImageColumn <000.000000E+00\.\.>
(0021,1170) SIEMENS CM VA0 CMS PatientOrientationSet1 <R\AH\HP>
(0021,1171) SIEMENS CM VA0 CMS PatientOrientationSet2 <L\PF\FA>
(0021,1180) SIEMENS CM VA0 CMS StudyName <routine_brain/6_opt3_mprag>
(0021,1182) SIEMENS CM VA0 CMS StudyType <MEA>
(0021,1334) SIEMENS MR VA0 GEN NumberOf3DImagePartitions <000128>
(0021,1339) SIEMENS MR VA0 GEN SlabThickness <001.800000E+02>
(0021,1342) SIEMENS MR VA0 GEN CurrentSliceNumber <000001>
(0021,1343) SIEMENS MR VA0 GEN CurrentGroupNumber <000001>
(0021,134f) SIEMENS MR VA0 GEN OrderofSlices <ASCENDING>
(0021,1370) SIEMENS MR VA0 GEN NumberOfEchoes <000001>
(0029,0011) PrivateCreator <SIEMENS CM VA0 CMS>
(0029,1120) SIEMENS CM VA0 CMS PixelQualityCode <NONE\NONE\NONE>
(0051,0010) PrivateCreator <SIEMENS CM VA0 CMS>
(0051,1010) SIEMENS CM VA0 CMS ImageText <...>
3.3.2.4 Siemens Magnetom Vision
Unknown. Bound to be SPI but don't know what attributes
are present.
3.3.3 Philips MR
3.3.3.1 Philips Gyroscan S5
- can export as ACR/NEMA (actually SPI) files
- little endian byte order
- 12 bit packed data
This description pertains to "exported ACR/NEMA", not the
native image files, which I am not familiar with. In fact I am not even sure in
which directory they live.
Use the ADMIN menu on the operator's console to find the
import/export ACR/NEMA utility, with which you can select an exam, series or
image to export as an ACR/NEMA file. The default directory is the GYROVIEW home
directory, which is already pretty cluttered so it is better to make another
subdirectory like "ANI" to keep exported files in. The exported files have huge
names composed of identification information, but all have a ".ANI" extension.
For example:
DIR SYS$SYSROOT:[GYROSCAN]*.ANI;*
SMITH__FA02010801010001.ANI;1
These files are stored as, wait for it, fixed length 512
byte records, with the "carriage return carriage control" record attributes set
from some bizarre reason, which totally messes up kermit which starts messing
with adding and changing CR/LF characters. See the Vax diatribe below for a
method of getting around this, by using DUMP as a poor man's uuencode
permitting ascii transfer. Unfortunately the nature of fixed length records
under VMS means that the last record will be padded out to 512 bytes without
any indication of the "real" end-of-file. This means your ACR/NEMA reader has
to cope with trailing garbage gracefully.
Unlike the Siemens SPI files, the Philips ones are stored
in little-endian format. There is no fixed size header to skip, just go
straight into the ACR/NEMA data stream. For the image pixel data four 12 bit
words are packed without padding into 16 bit words, without any compression
sheme. See the ACR/NEMA section for description of the packing organization.
Lots of private tags are defined, but these can be ignored. Some of the
identifying tags present are as follows:
(0000x8,000x10) CS RecognitionCode VR=<CS> VL=<0xc> <ACR-NEMA 1.0>
(0000x8,000x70) LO Manufacturer VR=<LO> VL=<0x8> <Philips >
(0000x8,0x1090) LO ManufacturerModelName VR=<LO> VL=<0x2> <S5>
(0000x9,000x10) LT SPIComments VR=<LT> VL=<0xe> <SPI Release 1 >
(000x19,000x10) VR=<LT> VL=<0x14> <PHILIPS MR R5.6/PART>
To get the files off, I plug a portable with a serial
cable into one of the spare serial ports inside one of the Vax cabinets, at
9600 baud, and login as "GYROVIEW/NOCOM" without any password needed. This
dumps you in the same directory as the files will be stored by default. You
will probably need to set local echo on on your portable, or "SET
TERMINAL/ECHO" on the Vax.
Kermit was already loaded on my system, accessed as "RUN [SYSEXE]KERMIT". See
the Vax section later for more help.
3.3.3.2 Philips Gyroscan ACS
3.3.3.3 Philips Gyroscan T5
3.3.3.4 Philips Gyroscan NT5 & NT15
3.3.4 Picker MR - another black hole
3.3.5 Toshiba MR - another black hole
3.3.6 Hitachi MR - another black hole
3.3.7 Shimadzu MR - another black hole
3.3.8 Elscint MR - another black hole
The next part is part5 - proprietary other formats.
Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news2.near.net!howland.reston.ans.net!news.sprintlink.net!news.clark.net!rahul.net!a2i!flash.us.com!flash.us.com!not-for-mail
From: dclunie@flash.us.com (David A. Clunie)
Newsgroups: alt.image.medical,comp.protocols.dicom,sci.data.formats,sci.med.informatics,sci.med.radiology,alt.answers,comp.answers,sci.answers,news.answers
Subject: Medical Image Format FAQ, Part 5/8
Followup-To: alt.image.medical
Date: 28 Mar 1995 23:03:36 +0300
Organization: Her Master's Voice
Lines: 155
Approved: news-answers-request@MIT.EDU
Distribution: world
Expires: 28 Apr 1995 00:00:00 GMT
Message-ID: <3l9q2o$dls@flash.ksapax>
Reply-To: dclunie@flash.us.com (David A. Clunie)
NNTP-Posting-Host: flash.ksapax
Summary: This posting contains answers to the most Frequently Asked
Question on alt.image.medical - how do I convert from image
format X from vendor Y to something I can use ? In addition
it contains information about various standard formats.
Xref: senator-bedfellow.mit.edu alt.image.medical:2437 comp.protocols.dicom:638 sci.data.formats:888 sci.med.informatics:1731 sci.med.radiology:1809 alt.answers:8368 comp.answers:10925 sci.answers:2333 news.answers:40888
Archive-name: medical-image-faq/part5
Posting-Frequency: monthly
Last-modified: Sat Feb 18 16:42:58 GMT+0300 1995
Version: 2.02
3.4 Proprietary Workstations
3.4.1 ISG Workstations
3.4.1.1 Gyroview
The Philips Gyroview workstation is a high-resolution
graphical workstation for MR images from Gyroscan scanners, that can also
handle CT images and other modalities, and has an optional package for three
dimensional processing of images. It is based on a Sun SPARC system with
proprietary graphics hardware. The software is actually written by ISG in
Canada. The image format is an ACR/NEMA based format with various private tags
defined, and a proprietary scheme of image compression that has me stumped. I
am told by some that there is no means of telling the Gyroview not to compress
the images. I use compress in the sense that includes packing four 12 bit words
into three 16 bit big-endian words, which appears to be part of the scheme in
use. Unfortunately, some form of perimeter encoding is also in use, and I just
can't figure it out :( Some people have had more luck using "the export utility
of the Gyroview" to produce just 12 bit packed images without the perimeter
encoding. I don't know whether this is a standard feature of the workstation or
not. Others have suggested looking in the "/isg/3dmr/DataRoot/tscript/"
directory for hints.
Despite prolonged exchanges of email, and encouragement
from other individuals at ISG, it seems that the formal decision by the manager
of the customer service department, Irene Gearin, is not to release the format.
Customers may contact her at ireneg@isgtec.com for information on how to obtain
a software package called the External Developers Tool which contains a tool
called xdimage which can only be used on ISG's proprietary hardware. Whether
this is free to customers or costs extra I am not sure, but I believe a
non-disclosure agreement is required.
I would still prefer to know the format, as people keep
asking (these machines were pretty popular I gather), and if anyone has any
hints about the data format, I would appreciate them. Here follows part of a
reply to one of these people when I made an unsuccesful attempt to figure this
out:
Firstly, I presume this file is generated by a Philips Gyroview workstation
judging by ...
(0008,0070) LO Manufacturer VR=<LO> VL=<8> <GYROVIEW>
The file says it is an MRI image ...
(0008,0060) CS Modality VR=<CS> VL=<2> <MR>
and yet it is missing many of the mri attributes normally present. Also it
includes some CT specific attributes, notably ...
(0018,1120) DS GantryDetectorTilt VR=<DS> VL=<2> < 0>
which is pretty weird. I presume that this format is generated by something
purely for the purposes of 3D reconstruction and only the attributes needed for
that have been preserved.
The image appears to be 512*512 ...
(0028,0010) US Rows VR=<US> VL=<2> [200]
(0028,0011) US Columns VR=<US> VL=<2> [200]
As far as the compression format is concerned ...
(0028,0060) CS CompressionCode VR=<CS> VL=<2> < 2>
is not in itself a valid ACR/NEMA value, and hence some proprietary variation
is in use. The most important clue is ...
(0028,0040) CS ImageFormat VR=<CS> VL=<4> <CIRC>
which is also not valid ACR/NEMA (only RECT is permitted). From this I conclude
that some sort of 'circular' perimeter encoding scheme is in use that only
sends the meaningful central pixels in each row and leaves out the background.
This is substantiated by the fact that the image pixel data seems to be
preceded by a table of 257 long words in ascending order, each value separated
by relatively low values (80-100 or so). I suspect that these are pointers into
the data to the start of each row...
% od -x I011_1_001 +1404 | more
0001404 0000 0202 0000 0252 0000 02a2 0000 02f2
0001424 0000 0342 0000 0392 0000 03e2 0000 0432
0001444 0000 0482 0000 04d2 0000 0522 0000 0572
0001464 0000 05c2 0000 0612 0000 0662 0000 06b3
0001504 0000 0705 0000 0757 0000 07ab 0000 0800
0001524 0000 0857 0000 08ae 0000 0905 0000 095e ...
[0000] 000514 -> 000514
[0001] 000594 -> 000080
[0002] 000674 -> 000080
[0003] 000754 -> 000080
[0004] 000834 -> 000080
[0005] 000914 -> 000080
...
[0155] 015322 -> 000103
[0156] 015425 -> 000103
[0157] 015527 -> 000102
[0158] 015629 -> 000102
...
[0254] 024484 -> 000080
[0255] 024564 -> 000080
[0256] 024564 -> 000000
The first of these values seems to be a pointer in two byte word units past the
table, the entries for a series of rows, then a final "257th" value that is the
same as the preceding with a difference of zero, possibly flagging the end of
the table.
What confuses me is the fact that there are 256 or so entries rather than 512
(number of rows), and that the difference values are relatively small for 512
columns. Perhaps each entry applies to two successive rows though this seems
rather peculiar.
Furthermore, if it is true that the units are two byte words, then the last
pointer value is much lower than the number of remaining bytes in the image
pixel data attribute, so what are all the other bytes for ?
The other thing that is going to make extraction difficult is the fact that the
data are supposed to be 12 bits packed into 16 bit words ...
(0028,0100) US BitsAllocated VR=<US> VL=<2> [c]
(0028,0101) US BitsStored VR=<US> VL=<2> [c]
(0028,0102) US HighBit VR=<US> VL=<2> [b]
Hence 3 two byte words are used to store 4 12 bit pixels. It may not be easy to
figure out in what order this packing is performed. The ACR/NEMA standard has
an example of its intent in this case, but the byte order was never specified
for this standard, which had a 16 bit hardware data path and was not originally
intended for offline data storage in bytes, so there are a number of possible
permutations to deal with :(
Finally I don't know what to make of the "private" tags ...
Unrecognized (0029,0010) VR=<LT> VL=<a> <ISG shadow>
Unrecognized (0029,1070) VR=<LT> VL=<6> < 49128>
Unrecognized (0029,1080) VR=<LT> VL=<6> <123432>
Unrecognized (0029,1090) VR=<LT> VL=<2> < 0>
which presumably have some significance or they wouldn't be there !
3.5 Other Proprietary Formats
Empty at present.
The next part is part6 - hosts & compression.
Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news2.near.net!howland.reston.ans.net!news.sprintlink.net!news.clark.net!rahul.net!a2i!flash.us.com!flash.us.com!not-for-mail
From: dclunie@flash.us.com (David A. Clunie)
Newsgroups: alt.image.medical,comp.protocols.dicom,sci.data.formats,sci.med.informatics,sci.med.radiology,alt.answers,comp.answers,sci.answers,news.answers
Subject: Medical Image Format FAQ, Part 6/8
Followup-To: alt.image.medical
Date: 28 Mar 1995 23:03:44 +0300
Organization: Her Master's Voice
Lines: 634
Approved: news-answers-request@MIT.EDU
Distribution: world
Expires: 28 Apr 1995 00:00:00 GMT
Message-ID: <3l9q30$dmd@flash.ksapax>
Reply-To: dclunie@flash.us.com (David A. Clunie)
NNTP-Posting-Host: flash.ksapax
Summary: This posting contains answers to the most Frequently Asked
Question on alt.image.medical - how do I convert from image
format X from vendor Y to something I can use ? In addition
it contains information about various standard formats.
Xref: senator-bedfellow.mit.edu alt.image.medical:2438 comp.protocols.dicom:639 sci.data.formats:889 sci.med.informatics:1732 sci.med.radiology:1810 alt.answers:8369 comp.answers:10926 sci.answers:2334 news.answers:40889
Archive-name: medical-image-faq/part6
Posting-Frequency: monthly
Last-modified: Sat Feb 18 16:42:58 GMT+0300 1995
Version: 2.02
4. Host Machines
4.1 Data General
4.1.1 Data General Data
4.1.1.1 Data General Integers
Integers are 16 bit two's complement and stored in
big-endian format as on Sun Sparc and opposite to the Dec VAX.
4.1.1.2 Data General Floating Point
Single precision real values are 32 bits long, in
big-endian format. The high bit is the sign bit, followed by a 7 bit excess 64
exponent (power to which 16 must be raised) then a 24 bit hexadecimally
normalized mantissa with the decimal point to the left of the most significant
bit. Double precision values just have another 32 bits tacked on the mantissa
and the same exponent format.
Sign
|<-->|<------ Exponent ------>|<--------- Mantissa -------->|
______________ ______________ ______________ ______________
| | | | |
|______________|______________|______________|______________|
31 28 27 24 23 20 19 16
|<----------------------- Mantissa ------------------------>|
______________ ______________ ______________ ______________
| | | | |
|______________|______________|______________|______________|
15 12 11 8 7 4 3 0
Here is a little piece of C++ code that should run on
anything and convert Data General floats to whatever the host's floating point
format is.
double value;
unsigned char sign;
Uint16 exponent;
Uint32 mantissa;
typedef struct {
unsigned sign : 1;
unsigned exponent : 7;
unsigned mantissa : 24;
} DG_FLOAT;
DG_FLOAT number;
unsigned char buffer[4];
instream.read(buffer,4);
if (instream) {
// DataGeneral is a Big Endian machine
memcpy ((char *)(&number),buffer,4);
sign = number.sign;
exponent = number.exponent;
mantissa = number.mantissa;
value = (double) mantissa / (1 << 24) *
pow (16.0, (long)(exponent) - 64);
value = (sign == 0) ? value : -value;
}
else {
cerr << "read failed\n" << flush;
value=0;
}
4.1.2 Data General Operating System
4.1.2.1 Data General RDOS
Used on the GE CT 9800 family. Severely primitive but
then is running on an old machine that can only map 64Kb of memory at a time
after all. It is apparently multitasking. Documentation may still be available
from Data General (try DG Direct) but is not supplied with the scanner by GE.
If anyone knows where I can find it at a reasonable price let me know. Here is
a brief command summary culled from a nifty pocket book from GE for
SunOS/Genesis users that compares commands:
CHATR - file attributes
CRAND - create randomly organized file
CDIR - create directory
DELETE - files or directories
DIR - change directory
DISK - free space
FILCOM - compare files
GDIR - show working directory name
GTOD - show date and time
LINK - files (symbolic)
LIST - directory contents
MOVE - a file
RENAME - a file
SDAT - set date
STOD - set time
SDUMP - write files to a device
SLOAD - read dumped files
SPEED - tex editor
TYPE - contents of file
XFER - copy a file
wildcards: '-' is series, '*' is single character
4.1.2.2 Data General AOS/VS
Used on the GE Signa 3X and 4X family. Quite a nice
operating system with multi-tasking and hierarchical directories. Here is a
brief command summary again culled from a nifty pocket book from GE for
SunOS/Genesis users that compares commands:
ACL - access control list (ownership)
BYE - exit command process
COPY - a file
CREATE - a text file
CREATE/DIR - a directory
CREATE/LINK - link files
DELETE - files & directories
DIR - display or change working directory
DUMP - to peripheral
F/AS/S - directory listing with file status
DATE - show or set
HELP
LOAD - DUMPed files
MOVE - a file
RENAME - a file
PATH - show pathname of a file
PAUSE - the command line interpreter
SUPERU ON - enable superuser
SED - text editor
TIME - show or set
TYPE - contents of text file
? - list processes running
wildcards: '+' is series, '*' is single character
Other useful hints include the use of "^" to refer to the
next directory up (like ".." in Unix) in DIR commands. Command options follow
the command name without any spaces and are indicated by a slash. COPY
operations specify the destination name first and then the source name. Devices
like the mag tape are indicated by "@", for example "@MTB0" is tape drive zero.
Files on the tape can be referred to as "@MTB0:nn" which is very handy. For
example to read a file off a CT 9800 tape under AOS/VS:
COPY/V/IMTRSIZE=8192 B038040101.YP @MTB0:18
Perhaps most importantly, there is an extensive online
help system ... use the HELP command.
4.1.3 Data General Network
If you have a GE Signa based on a DG then you can get the
so-called "High Speed Network" card and software from GE. From memory it is
pretty pricey, and there used to be a "slower" network interface that was
cheaper, but I don't think this is available anymore.
If you have a CT 9800 based on the DG S/140 and you need to get
it connected there are a number of solutions:
- Talk to GE about there ID/LINK II product ... I gather this is a
device that hooks into the SCSI cable to the hard drive (you need one of the
Ace drives not the old Zebra drive), monitors disk activity and snatches pieces
of the conversation to make a copy of the image data, stores it and makes it
available via some network protocol. Sound crazy ? Perhaps, but they tell me it
works and the price is reasonable, at least for something from GE anyway. Get
them to throw one in next time you buy something big.
- The do-it-yourself approach. Talk to John Clayton
(clayton@c-c.com) at Claflin and Clayton. They supply a complete R-level
solution by providing Ethernet hardware and TCP/IP software for 16 bit DG OS
including AOS and RDOS (specifically including the GE CT version of RDOS). He
tells me "you can expect a file transfer rate of 25 kbytes/s for S/140
systems". The package consists of:
$2,850 - EC-10 ethernet controller
$1,645 - RDOS TCP/IP software (telnet client,ftp client/server)
I have not personally tried either of these approaches, and I am
sure there are others (talk to Merge or DeJarnette), but I am getting really
tired of carrying 9-track tapes around so perhaps I will bite the bullet soon
(and upgrade to a HighSpeed Advantage !).
4.2 Vax
4.2.1 Vax Data
4.2.1.1 Vax Integers
- little endian
- 8, 16, or 32 bits
4.2.1.2 Vax Floating Point
- little endian
- D_float
- 8 bytes
- sign bit 15
- exponent bits 14-7 excess 128 binary
- fraction MSB firstbits 6-0, 31-16, 47-32, 63-48
- normalized bit is not represented (hidden)
- G_float
- 8 bytes
- like D, but
- exponent is bits 14-4 excess 1024
- fraction 3-0 and 63-16
- F_float
- 4 bytes
- like D, smaller fraction
- H_float
- 16 bytes
- like G, but
- exponent is bits 14-0 excess 16384
- fraction is bits 127-16
- same wierd order
- bit 112 least significant
4.2.1.3 Vax Strings
- 16 bits of length
- byte of type
- byte of class
- 32 bits of pointer
4.2.2 Vax Operating System
4.2.2.1 Vax VMS
Truely one of the world's most irritating operating
systems to use, especially if you are a unix fan. Still it works, has a great
online help system that saves one's butt almost often enough to be useful, and
if you can remember the directory where kermit is stored and the weird command
to invoke it one can get by (barely).
If you don't know VMS and the vendor doesn't supply the
manuals, get them from DEC ... you need them bad ... real bad. If (like me) you
throw them out everytime you move then encounter another piece of archaic
equipment, you need the "vaxbook" which is available via ftp from
decoy.uoregon.edu, written by Joseph E St Sauver, which summarizes commands,
files and all sorts of application specific stuff, though it is no substitute
for the real thing.
Recent VMS update: goddamn file formats ! Why can't VMS
behave like a real operating system and forget this file format crap ! I have
some Philips S5 MR images exported in ACR/NEMA format and I can't get the
things off the hosts's Vax using Kermit, because though they have fixed length
512 byte records, some cretinous program sets the "carriage return carriage
control" record attributes, which causes kermit to send with all the '0A'
characters scrubbed out amongst other atrocities. I am getting desperate and
about to try using the Hex/Dehex utility that came with Kermit to get the stuff
off and then decode the hex format ! Or perhaps even use "dump" to make a
textfile, transfer, and decipher that. (No I don't have a C compiler for the
Vax so I guess I can't use uuencode unless someone wants to mail me a hex'ed
executable). Any hints, or instructions as to how to use FDL and Convert, to
change it to a normal format would be appreciated. (Why can't they just have a
"set file record attribute xxx" command like all the other millions of set
commands ? Grrrr.).
More recent VMS update: finally had an inspiration while
staring at hex dumps of these files - why not use the VMS "DUMP" utility which
produces hex dumps as a "poor man's uuencode" by saving the dump to a file,
transferring it as an ascii file, and then decoding it at the destination ? Of
course there are no nifty line checksums or anything, but a transfer protocol
such as kermit takes care of this. The DUMP output defaults to 8 32 bit long
words separated by a space per line displayed as hex, then an ascii string (32
bytes) and then a 24 bit word hex address offset from the start of the fixed
length record. All the data containing lines start with a single space, where
as descriptions at the start of each record begin in the first column, hence
the data lines can be easily selected out. By the way, the hex version of the
data is listed in reverse order ! VMS is so bizarre ! For example, here is a
fixed length 512 byte record file from a Philips S5 MRI (some of the hex words
elided to make the line fit on the page):
Dump of file SYS$SYSROOT:[GYROSCAN]ABAALKHAIL02010201010001.ANI;1 ...
File ID (2419,301,0) End of file block 198 / Allocated 200
Virtual block number 1 (00000001), 512 (0200) bytes
0000000C 00100008 ... 00000008 ........╢...........≡........... 000000
00083932 2E36302E ... 2D524341 ACR-NEMA 1.0.. .....1994.06.29.. 000020
00600008 4D5F4553 ... 00000030 0.......@.........A.....SE_M..`. 000040
494B0000 00100080 ... 00000002 ....MR..p.....Philips ........KI 000060
00183148 00000002 ... 32200000 .. 2........63865375........H1.. 0001E0
^L
Dump of file SYS$SYSROOT:[GYROSCAN]ABAALKHAIL02010201010001.ANI;1 ...
File ID (2419,301,0) End of file block 198 / Allocated 200
Virtual block number 2 (00000002), 512 (0200) bytes
40000018 45424F52 ... 00161250 P.....AGACQ_PT_SURFACE_PROBE...@ 000000
And so on ... you get the idea. This ugly little C++ utility written quickly
during this moment of inspiration will take saved DUMP output and make it
binary again:
#include <fstream.h>
#include "MainCmd.h"
signed char
hextobin(char c)
{
signed char r;
switch (c) {
case '0': r=0; break;
case '1': r=1; break;
case '2': r=2; break;
case '3': r=3; break;
case '4': r=4; break;
case '5': r=5; break;
case '6': r=6; break;
case '7': r=7; break;
case '8': r=8; break;
case '9': r=9; break;
case 'A':
case 'a': r=0xa; break;
case 'B':
case 'b': r=0xb; break;
case 'C':
case 'c': r=0xc; break;
case 'D':
case 'd': r=0xd; break;
case 'E':
case 'e': r=0xe; break;
case 'F':
case 'f': r=0xf; break;
default: r=-1; break;
}
return r;
}
int
main(int argc,char **argv)
{
CCOMMAND(argc,argv);
while (1) {
const linemax=132; // only needs 113
char line[linemax];
cin.getline(line,linemax);
if (!cin || cin.eof()) {
// cerr << "Bad or eof\n" << flush;
break;
}
unsigned count=cin.gcount();
if (count == 0 || line[0] != ' ') continue;
if (count != 113) {
cerr << "Line length " << count << "\n" << flush;
break;
}
unsigned i;
char *ptr = line + 8*(1+8);
// line is in reverse order ...
for (i=0; i<8; ++i) {
unsigned j;
for (j=0; j<4; ++j) {
// 2 hex bytes -> 1 byte
char bytelo = *--ptr;
char bytehi = *--ptr;
unsigned char byte
= (hextobin(bytehi)<<4)
+ hextobin(bytelo);
cout.put(byte);
}
--ptr; // space between long words
}
}
return 0;
}
Note that the nature of fixed length records under VMS
means that the last record will be padded out to 512 bytes without any
indication of the "real" end-of-file. This means you have to cope with trailing
garbage gracefully.
Hot VMS/Philips news: neelin@pet.mni.mcgill.ca (Peter
Neelin) tells me there is an extremely useful tool for fiddling binary files
called FILE from DECUS. It allows you to change a file's header information
without modifying the content of the file. This then permits ftp, kermit, etc.
to do the right thing with Philips .ANI files. It also permits wildcards and
does not make a copy of the file (so it is fast). He says also that someone has
told him that they succeeded in using convert to fix these files, but his
general experience with it is not positive (it will often change the content of
the file and it doesn't allow wildcards, in addition to promoting the use of
the horrible fdl editor!). If you are interested, you can get FILE through
gopher from decus.org (look for the DECUS software library archives, under
essential tools). The binary is provided in case you don't have a compiler.
Some other useful hints:
- To log onto a serial terminal without executing the
login command file add "/NOCOM" to the username ... this way you can use the
operator console login which often won't require a password.
- There is a kermit available for the Vax under VMS (file
prefix "vms" in area or tape b) ... I use the "obsolete" version written in
Bliss, because it comes from the archives at columbia with a hex encoded
executable which can be uploaded just using an ordinary text capture into a
file, and doing the same with the short Macro hex program that can then be
assembled and used to make the convert into the real executable. Look in places
like [SYSEXE] first though to be sure Kermit is not already there. The generic
C version of kermit runs under VMS (file prefix "ck" in area or tape f), but
not every imaging machine comes with a VMS C compiler, whereas Macro is always
supposed to be there I gather. There is however also a hex encoded executable
of the C version in the archives (ckvker.hex) which I haven't tried, and is the
one that is recommended in the kermit documentation.
- There is apparently a zmodem for VMS but I don't know
where it comes from or how to get it.
- Serial ports are almost always defaulted to 9600 baud.
- "SET TERMINAL/ECHO" often isn't set.
- Vax/VMS ftp conventions:
UNIX FTP server Vax/VMS FTP server
cd dir cd [.dir]
cd dir/subdir cd [.dir.subdir]
cd .. cd [-]
4.2.2.2 ULTRIX
4.2.2.3 OSF
4.3 Sun - Sun3 68000 and Sun4 Sparc
4.3.1 Sun Data
The sun3 and sun4 architectures use much the same formats. Even
though the processors are different both are big-endian and the float formats
are IEEE. See the Sparc Architecture Manual - Chapter 3 - Data Formats for more
details.
4.3.1.1 Sun Integers
Integers are 8, 16, 32, or 64 bit unsigned or signed
two's complement and stored in big-endian format as on Data General and
opposite to the Dec VAX. Most C compilers treat short as 16 bits, and int and
long as 32 bits.
4.3.1.2 Sun Floating Point
Formats conform to IEEE 754-1985. Single precision real
values are 32 bits long, in big-endian format. The high bit is the sign bit,
followed by a 8 bit excess 127 exponent (power to which 2 must be raised) then
a 23 bit normalized mantissa with the decimal point to the left of the most
significant bit, from which 1.0 has been subtracted. Double precision values
have a 11 bit excess 1023 exponent and a 52 bit mantissa. Quad precision values
have a 15 bit excess 16383 exponent and a 112 bit mantissa.
Sign
|<-->|<-------- Exponent -------->|<------- Mantissa ------>|
______________ ______________ ______________ ______________
| | | | |
|______________|______________|______________|______________|
31 28 27 24 23 20 19 16
|<----------------------- Mantissa ------------------------>|
______________ ______________ ______________ ______________
| | | | |
|______________|______________|______________|______________|
15 12 11 8 7 4 3 0
Here is a little piece of C++ code that should run on
anything and convert Sun IEEE floats to whatever the host's floating point
format is. It probably should take into account a few special cases to be
strictly correct:
unsigned char buffer[4];
instream.read(buffer,4);
if (instream) {
#ifdef USESUN4NATIVEFLOAT
float fvalue;
memcpy ((char *)(&fvalue),buffer,4);
value=fvalue;
#else USESUN4NATIVEFLOAT
unsigned char sign;
Uint16 exponent;
Uint32 mantissa;
typedef struct {
unsigned sign : 1;
unsigned exponent : 8;
unsigned mantissa : 23;
} IEEE_FLOAT_SINGLE;
IEEE_FLOAT_SINGLE number;
// Sparc is a Big Endian machine
memcpy ((char *)(&number),buffer,4);
sign = number.sign;
exponent = number.exponent;
mantissa = number.mantissa;
if (exponent) {
value = (1.0 + (double)mantissa / (1 << 23)) *
pow (2.0, (long)(exponent) - 127);
}
else {
if (mantissa) {
value = (double)mantissa / (1 << 23) *
pow (2.0, (long)(-126));
}
else {
value=0;
}
}
value = (sign == 0) ? value : -value;
#endif USESUN4NATIVEFLOAT
}
else {
cerr << "read failed\n" << flush;
value=0;
}
4.3.1.3 Sun Strings
Strings obey the usual C convention of null terminated
strings without a length preamble.
4.3.2 Sun Operating System
5. Compression Schemes
5.1 Reversible Compression
5.2 Irreversible Compression
5.2.1 Perimeter Encoding
6. Getting Connected
6.1 Tapes
Nine-track half-inch tapes were the old medium of choice for archiving
and image exchange and many older pieces of equipment will have these.
Unfortunately most people don't have such a drive on their workstation or
personal computer. There are several possibilities:
- Use another piece of equipment that has a more modern or
networked or serial-ported host and a nine-track drive, and
use it to do the extraction. I used to use a networked Signa 4X
to do this to extract GE 9800 CT tapes.
- Visit your MIS department, which almost certainly has an archaic
mainframe with a tape drive. Sometimes tough to get them to read
formats they aren't expecting though (the hosts not the people
I mean :) ).
- Buy a nine-track for your workstation. This may seem a ridiculous
idea given the price of new 6250 bpi drives are around $5,000, but
one can often pick up bargain primitive non-6250 or refurbished
drive that is adequate for the job.
The Qualstar 1054 is one such drive, that attaches to a SCSI port, and
works with the regular SunOS SCSI tape driver, once a few tables in the kernel
have been updated as follows, and the kernel rebuilt:
{root}% pwd
/usr/kvm/sys/scsi/targets
{root}% diff -c stdef.h.prequalstar stdef.h
*** stdef.h.prequalstar Tue Aug 30 19:32:24 1994
--- stdef.h Tue Aug 30 19:32:24 1994
***************
*** 43,48 ****
--- 43,49 ----
#define ST_TYPE_FUJI 0x21 /* Fujitsu - (not tested) */
#define ST_TYPE_KENNEDY 0x22 /* Kennedy */
#define ST_TYPE_HP 0x23 /* HP */
+ #define ST_TYPE_QUALSTAR 0x24 /* Qualstar */
#define ST_TYPE_HIC 0x26 /* Generic 1/2" Cartridge */
#define ST_TYPE_REEL 0x27 /* Generic 1/2" Reel Tape */
{root}% diff -c st_conf.c.prequalstar st_conf.c
*** st_conf.c.prequalstar Tue Aug 30 19:32:22 1994
--- st_conf.c Tue Aug 30 19:32:22 1994
***************
*** 153,158 ****
--- 153,174 ----
* so our best guess as to their capabilities is
* included herein.
*/
+ /* Qualstar 1054 or 1260s scsi 9-track with 64KB buffer */
+ {
+ "Qualstar 1054/1260s 1/2\" Reel", 7, "NCR ADP-53", ST_TYPE_QUALSTAR,
10240,+ (ST_REEL | ST_VARIABLE | ST_BSF | ST_BSR),
+ 300, 300,
+ { 0x00, 0x02, 0x06, 0x03},
+ { 0, 0, 0, 0 }
+ },
+ /* Qualstar 1054 scsi 9-track with 256KB buffer */
+ {
+ "Qualstar 1054 1/2\" Reel", 10, "QUALSTAR10", ST_TYPE_QUALSTAR, 10240,
+ (ST_REEL | ST_VARIABLE | ST_BSF | ST_BSR),
+ 300, 300,
+ { 0x00, 0x02, 0x06, 0x06},
+ { 0, 0, 0, 0 }
+ },
/* Wangtek QIC-150 1/4" cartridge */ {
"Wangtek QIC-150", 14, "WANGTEK 5150ES", ST_TYPE_WANGTEK, 512,
(ST_QIC | ST_AUTODEN_OVERRIDE),
I got my Qualstar 1054 from Bill Power at Power Computer Services for
only $750 and have successfully read GE 9800 CT and Philips S15 MR tapes with
it so far. See the "Sources" section for where to get one.
Once you have such a tape connected to the SCSI port, one can either
write simple programs to read files (easiest if the tape has variable length
records) or use shell scripts and the "dd" command with whatever the correct
block size is. See dd(1), mt(1), and mtio(3) for more information. Remember
that the read(2) call reads one fixed or variable length record at a time, and
returns 0 bytes read for a tape mark, and two tape marks in a row indicates the
end of the tape (normally). If you encounter short files with a series of
records 80 bytes long chances are you are dealing with header/end markers. This
is what ANSI standard tapes off VAX VMS seem to look like.
Anyone who has any further information about tape formats and handling,
especially references to standard or on-line documents please let me know.
6.2 Ethernet
6.3 Serial Ports
The next part is part7 - information sources.
Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news2.near.net!howland.reston.ans.net!cs.utexas.edu!news.sprintlink.net!news.clark.net!rahul.net!a2i!flash.us.com!flash.us.com!not-for-mail
From: dclunie@flash.us.com (David A. Clunie)
Newsgroups: alt.image.medical,comp.protocols.dicom,sci.data.formats,sci.med.informatics,sci.med.radiology,alt.answers,comp.answers,sci.answers,news.answers
Subject: Medical Image Format FAQ, Part 7/8
Followup-To: alt.image.medical
Date: 28 Mar 1995 23:03:55 +0300
Organization: Her Master's Voice
Lines: 952
Approved: news-answers-request@MIT.EDU
Distribution: world
Expires: 28 Apr 1995 00:00:00 GMT
Message-ID: <3l9q3b$dmu@flash.ksapax>
Reply-To: dclunie@flash.us.com (David A. Clunie)
NNTP-Posting-Host: flash.ksapax
Summary: This posting contains answers to the most Frequently Asked
Question on alt.image.medical - how do I convert from image
format X from vendor Y to something I can use ? In addition
it contains information about various standard formats.
Xref: senator-bedfellow.mit.edu alt.image.medical:2439 comp.protocols.dicom:640 sci.data.formats:890 sci.med.informatics:1733 sci.med.radiology:1811 alt.answers:8370 comp.answers:10927 sci.answers:2335 news.answers:40890
Archive-name: medical-image-faq/part7
Posting-Frequency: monthly
Last-modified: Sat Feb 18 16:42:58 GMT+0300 1995
Version: 2.02
7. Sources of Information
7.1 Vendor Contacts
- ANSI - Getting a Registered Organization Number for a DICOM UID Root:
Registration Coordinator
Michelle A. Maas
phone (212) 642-4900
phone (212) 642-4884
fax (212) 398-0023
e-mail ATTMAIL.COM!MMAAS
X.400 C=US AD=ATTMAIL G=MICHELLE S=MAAS USER NAME=MMAAS
numeric identifier costs $1000 and takes 10 days
organization name costs $1500 and takes 90 days
- DICOM and ACR/NEMA standards:
NEMA Publication Sales
2101 L St. NW, Suite 300
Washington DC 20037-1526
phone (202) 457-8474
- DICOM standards comments and working group information:
David Snavely, Staff Executive
NEMA
2101 L St. NW, Suite 300
Washington DC 20037-1526
phone (202) 457-1965
Gordon Bass
American College of Radiology
1891 Preston White Drive
Reston VA 22091
phone (703) 648-8900
- FDA approval for PACS and Related Devices:
Guidance for the Comment and Review of 510(k)
Notifications for PACS and Related Devices
Small Manufacturers Assistance
phone (800) 638-2041
fax (301) 443-9435 (flash system for document delivery)
- FDA standards:
Fedworld Gateway
modem (703) 321-8020
telnet://fedworld.gov
ftp://ftp.fedworld.gov
http://www.fedworld.gov/
- General Electric (not just GEMS):
http://www.ge.com/
- General Electric CRD (Corporate Research & Development):
http://www.ge.com/crd/
- General Electric, GEMS DICOM information contacts:
Donald E. Van Syckle
Senior Systems Analyst
GE Medical Systems
3200 N. Grandview Blvd.
Waukesha WI 53188
phone (414) 521-6262
fax (414) 521-6800
email vansyckled@med.ge.com
- GEMS image format information contacts:
GE Format Documents currently available:
- 46-021852 Technicare Magnetic Tape Image Fmt
- 46-021853 CT 8800 Image Data Fmt
- 46-021854 CT 9000 Image Data Fmt
- 46-021855 CT 9800 Image Data Fmt
- 46-021856 CT Pace Image Data Fmt
- 46-021862 MR Max Image Data Fmt
- 46-021858 MR Signa 4.x Mag Tape and Image Data Fmt
- 46-021861 CT HLA/HSA MR Signa 5.x Image Data Fmt
- 46-021863 CT HLA/HSA MR Signa 5.x Optical Disk Raw Partition
- 46-021864 CT HLA/HSA MR Signa 5.x Image Extract Tool
- 46-021865 CT HLA/HSA MR Signa 5.x DAT Archive Fmt
- 46-021866 PET 4096 Plus and 2048 Plus Image Fmt
- 46-269546 IDNet v2.0 Implementation Profiles
Field engineers are now supposedly well informed about these
documents and can obtain them directly for you. They are
freely distributable.
You can try calling GE documentation direct at:
phone (800) 558-2040
phone (414) 548-2520
If these approaches doesn't work, try one of these guys.
John Meissner
Networks Technical Leader
GE Medical Systems
N25 W23255 Paul Road
Pewaukee WI 53072
phone (414) 896-2707
email meissnerj@med.ge.com
Alan Cuellar-Amrod
CT - G.E. OnLine Support
GE Medical Systems
email cuellara@iscmed.med.ge.com
- General Electric Medical Systems:
ftp://ftp.med.ge.com/
- General Electric, GEMS Ultrasound contact:
Paul Mullen
Radiology Product Manager
email logiq@med.ge.com
email mullenp@delphi.com (Paul Mullen)
- Independent JPEG Group (IJG):
tgl@netcom.com (Tom Lane)
- Interfile information contacts:
cradduck@irus.rri.uwo.ca (Trevor Cradduck)
a.todd@ucl.ac.uk (Andrew Todd-Pokropek)
- Images - digitized mammograms:
- no FTP site
- 50 each, normal and cancer mammograms
- digitized at 200 micrometers and 8 bits
- provide them with an appropriate tape
- Contact:
Maria Kallergi, PhD
Department of Radiology
University of South Florida
12901 Bruce B. Downs Blvd., Box 17
Tampa, FL 33612-4799
phone (813) 975-7873
fax (813) 975-7831
email kallergi@rad.usf.edu
7.2 Relevant FAQ's
- Archive-name: graphics/resources-list/part[1-3]
- Archive-name: graphics/faq
- Archive-name: pixutils-faq
- Archive-name: image-processing/Macintosh
- Archive-name: sci-data-formats
- Archive-name: compression-faq/part[1-3]
- Archive-name: jpeg-faq
- Archive-name: medical-image-faq/volume-visualization
- DICOM FAQ
- maintained by dsc@xray.hmc.psu.edu (David S. Channin)
- periodically posted to comp.protocols.dicom
- FITS basics and information (periodic posting)
- FITS (Flexible Image Transport System)
- for astronomical data
- periodically posted by
bschlesinger@nssdca.gsfc.nasa.gov (Barry M. Schlesinger)
- in sci.astro.fits,sci.data.formats
7.3 Source Code
See under FTP/WWW Sites
7.4 Commercial Offerings
- Anatomical images on CDROM and other atlases:
A.D.A.M Software, Inc.
phone (800) 408-ADAM Dept 502
phone (800) 408-ADAM Dept 504
phone (404) 980-0888
Lifeart
phone (800) 543-3278
phone (216) 291-1922
BodyWorks
Software Marketing Corp
9830 South 51st St, Bldg. A-131
Phoenix, AZ 85044
phone (602) 893-3377
VoxelMan Atlas
Springer-Verlag, Electronic Media
175 Fifth Avenue
New York, NY 10010
phone (212) 460-1682
phone (212) 533 5587
email blange@springer-ny.com
- Conversion from proprietary formats:
Phil Femano
Medical Imaging Consultants
phone (201) 812-1122
- Conversion from proprietary formats (Nuclear medicine):
Medical Imaging Technology Associates
Ray Deininger
29 Main Street
P.O. Box 197
Mainland PA 19451
phone (215) 513-0440
fax (215) 513-0442
email info@mita.com
email ray@mita.com
Images can be read from floppies, tapes, or networks on a PC.
Import formats include:
- Elscint SBACK (5.25")
- Elscint UST (5.25, 3.5")
- Elscint RECord (5.25")
- Gamma11 (5.25")
- Picker PCS (5.25")
- GE Starcam/StarII (3.5")
- GE Plink (5.25, 3.5")
- NIC (5.35")
- Interfile (5.25, 3.5")
- Medasys Paragon (5.25")
- Siemens Microdelta (5.25")
- Sophy F83 (5.25, 3.5")
- Sophy NXT (5.25, 3.5")
- ADAC (5.25")
Export formats include:
- TARGA (.TGA)
- GIF
- TIF
- PCX
- WPG
- PICT (MAC)
- Medvision*
- Interfile
- GE Starcam
- Elscint
- Siemens
- Sopha
- Gamma11
8" floppy formats (Microtek Conversion Systems include:
- Technicare
- GE Star
- Starcam
- StarII
- MDS
- Toshiba
- Elscint F1
- Scintronix
- Siemens
- Gamma11
- NIC
- Picker PCS
- Conversion from proprietary to ACR/NEMA format (MedVision for Mac):
Evergreen Technologies
Jeffrey Siegel
Main Street, PO Box 795
Castine ME 04421
phone 207-326-8300
fax 207-326-8333
email evergreen@applelink.apple.com
email jsiegel@lunis.nucmed.luc.edu
email 71035.3156@CompuServe.com
- Data General RDOS & AOS TCP/IP solution:
Claflin & Clayton
203 Southwest Cutoff
Northboro, MA 01532
phone 508-393-7979
fax 508-393-8788
email clayton@c-c.com
email 70262.3663@compuserve.com
- Data General themselves:
DG Direct
phone 1-800-343-8842
- Eight inch floppy solutions for PC's:
Microtek Conversion Systems
940 Industrial Ave
Palo Alto, Ca. 94303
phone (415) 424-1174
fax (415) 424-1176
8" drive and controller $2,095
Format software each package $595-$695
Computer Peripherals Unlimited
2355 N. Steves Blvd, Suite C
Flagstaff AZ 86004
phone (602) 526-2261
fax (602) 773-9183
8" drive and controller $1,245
Format software ? included
- Interfaces between vendors and DICOM 3.0 toolkits:
DeJarnette Research Systems Inc.
Suite 700
401 Washington Avenue
Towson, Maryland 21204
USA
phone 410-583-0680
fax 410-583-0696
email info@dejarnette.com
Merge Technologies, Inc.
1126 S. 70th St
Milwaukee, Wisconsin 53214-3151
phone 414-475-4300
fax 414-475-3940
email dwight@merge.com (Dwight Simon)
Kodak Health Imaging Systems
18325 Waterview Parkway
Dallas TX 75252
phone 214-994-1266
fax 214-994-4180
email cbs@khis.com (C.B.Stone)
- InterFormat - qsh to Interfile conversion, ACR/NEMA to qsh, et al.
- medical image format translation program
- automatically identifies and translates heterogeneous files
- Motif interface for user browsing & image selection
- input formats:
- GE 8800 CT, 9800 CT, Advantage CT & MR, Signa MR
- Technicare 2000 CT
- Positron PET
- Philips 300 Series CT
- Trionix Triad SPECT
- Siemens Somatom CT, Siemens Magnetom MR, CTI PET
- Varian CTSIM
- ACR-NEMA 1.0, ACR-NEMA 2.0, and AAPM/qsh
- output formats:
- AAPM/qsh
- Interfile
- ADAC Interfile
- Varian CTSIM
- other formats planned, including DICOM 3
David Reddy <--- USA contact
Radio Logic, Inc.
P.O. Box 9665
New Haven CT 06536
phone (203) 624-8113
email reddy@nucmed.med.nyu.edu
Bartec Medical Systems Ltd. <--- UK, Europe & Mideast
Impression House
Invincible Road
Farnborough Hampshire
GU14 7NP England
email bob@bartec.demon.co.uk
- Network hardware for PACS/telemedicine/WAN.
John A Hansen
Networks Northwest Inc.
PO Box 40209
Bellevue Wa 98015
phone (800) 835-9462
phone (206) 641-8779
fax (206) 641-8909
email jahansen@networksnw.com
- Plug-ins for Adobe Photoshop and NIH Image.
- ImportACCESS
A commercial Photoshop plugin that works with the many other
programs that support the plugin format. Reads fixed format
proprietary formats, and extra modules for ACR-NEMA 2.0,
DICOM 3.0, Interfile 3.3 files are available. Particularly
good at multi-slice images and color images, and clearly has
a nuclear medicine bias to it. Well documented. Recommended.
Note of potential bias - I was a beta tester.
Hugh Lyshkow
Designed Access
702 Wrightwood Ave.
Chicago IL 60614
phone (312) 880-2034
fax (312) 472-8834
email daccess@interaccess.com (Hugh Lyshkow)
- Scanners for Xray films.
Nathan Harris
DBA Systems, Inc.
phone (407) 727-0660
email nharris@dba-sys.com
Lumisys
Cobrascan
Vidar
XRS
email xrs@netcom.com
- Tape drives - 9-track 1/2".
Power Computer Services <--- $750 Qualstar 1054 SCSI
1132 Olympic Drive
Corona CA 91719
phone 800-323-0694
phone 909-371-3992
fax 909-371-1401
email billp@cerfnet.com (Bill Power)
Bill is also working on an 9-track interface replacement
to record on removable hard disk cartridges, to upgrade
old equipment.
- Teleradiology equipment vendors.
CompuMed Inc
Cary Cole
1200 No El Dorado Pl
Suite C300
Tucson AZ 85715
phone 602-544-0544
fax 602-722-9096
email compumed@indirect.com
- Video capture from medical devices.
Precision Digital Images
Lewis C. Larson
6742 - 185th Ave. NE
Suite 100
Redmond, WA 98052
phone 206-882-0218
fax 206-867-9177
email lewlar@aol.com (Lewis C. Larson)
- Viewers for Mac and/or Windows:
Evergreen Technologies
Jeffrey Siegel
Main Street, PO Box 795
Castine ME 04421
phone 207-326-8300
fax 207-326-8333
email evergreen@applelink.apple.com
email jsiegel@lunis.nucmed.luc.edu
email 71035.3156@CompuServe.com
MultiView for Macintosh
Image Data Corp.
Don Alvarez
11550 IH-10 West
San Antonio, TX 78230-1024
phone (210) 641-8340
fax (210) 641-7428
Alice
Hayden Image Processing Group
Boulder, Colorado, USA
phone (303) 449-3433
fax (303) 449-3772
email help@perceptive.com
Imaging Solutions
phone (908) 780-7836
email mdinkes@delphi.com (Marc Dinkes)
SiteView (Windows and SunOS 4.x)
Joe Shapiro
phone (617) 674-2199
fax (617) 674-2217
email gbb@ConSolve.com
email joe@ConSolve.com
demo ftp://wuarchive.wustl.edu/graphics/graphics/demo-packages/
demo ftp://ftp.cica.indiana.edu/pub/pc/win3/demo/
- Visible Human on CDROM.
Research Systems, Inc
email visible@rsinc.com
email peter@rsinc.com (Peter Hallett)
7.5 FTP/WWW sites
- 3D Reconstruction:
- http://biocomp.arc.nasa.gov/3dreconstruction
- 3DVIEWNIX (University of Pennsylvania):
NB. The new 1.1 version has a different distribution policy
and complete binary software, rather than just a demo, is
available from the ftp site.
- ftp://mipgsun.mipg.upenn.edu/3DVIEWNIX1.1/BINARIES
- ftp://mipgsun.mipg.upenn.edu/3DVIEWNIX1.1/MPEG_MOVIES
- ftp://mipgsun.mipg.upenn.edu/3DVIEWNIX1.1/DATA
- ftp://mipgsun.mipg.upenn.edu/3DVIEWNIX1.1/PAPERS
- ftp://mipgsun.mipg.upenn.edu/3DVIEWNIX1.1/MANUALS
- ftp://mipgsun.mipg.upenn.edu/3DVIEWNIX1.1/SRC
- ftp://mipgsun.mipg.upenn.edu/3DVIEWNIX1.1/TUTORIALS
- http://mipgsun.mipg.upenn.edu
- ACR Index of Radiologic Diagnoses (ascii text files):
- ftp://ftp.xray.hmc.psu.edu/acr_codes
- http://www.xray.hmc.psu.edu/
- ACR/NEMA plugins for Adobe Photoshop (works with NIH Image also):
- ftp://sumex-aim.stanford.edu/info-mac
- /Graphic/Utility/photoshop-acr-nema.hqx
- ftp://zippy.nimh.nih.gov/pub/nih-image
- /plug-ins/ACRNema.hqx
- /user-macros/import_ACR_NEMA.txt
- Anatomy - interactive programs:
- ftp://ftp.monash.edu.au/pub/medical
- Anatomy - lung:
- http://indy.radiology.uiowa.edu
/rad/books/LungAnat/LungAnat.html
- Angiography simulation:
- ftp://ftp.comp.vuw.ac.nz/pub/graphics/peter/xras-1.0.tar.gz
- http://www.comp.vuw.ac.nz/~peter/
- Blood flow modelling:
- georgef@server1.usa (George Foutrakis)
- http://www.neuronet.pitt.edu:8910/~georgef
- http://www.pitt.edu/~gnfst1
- CT reconstruction software:
- ftp://peipa.essex.ac.uk/ipa/src/process
- ct.tar.Z
- snark77.tar.Z
- Clip Art of things medical:
- http://www.mindspring.com/~mperloe/gallery.html
- ftp://goofy.cs.umd.edu/f/clipart/medical
- Dermatology:
- http://www.rrze.uni-erlangen.de/
- /docs/FAU/fakultaet/med/kli/derma/
- DICOM conformance statements:
- General Electric.
ftp://ftp.med.ge.com/pub/DICOM
- Index.
http://www.xray.hmc.psu.edu/
- DICOM conversion tools (from proprietary formats) and utilities:
- dicom3tools_*.tar.gz
- ftp://ftp.rahul.net/pub/dclunie
- http://www.rahul.net/dclunie
- Tools and libraries for handling offline files.
- Conversion from proprietary formats.
- Can handle older ACR/NEMA format data.
- Can handle SPI.
- VERY limited X display capability.
- No DICOM networking (yet).
- Features.
- Proprietary image conversions from ...
- GE CT 9800
- GE CT High Speed Advantage (Genesis)
- GE MR Signa 3X/4X
- GE MR Signa 5X (Genesis)
- GE CT Sytec
- GE CT Pace
- GE MR Max
- Siemens CT Somatom DR family
- Siemens CT Somatom Plus family (SPI)
- Siemens MR Magnetom Impact (SPI)
- Siemens MR Magnetom SP (SPI)
- Siemens MR Magnetom GBS/GBS2 (native)
- Philips MR Gyroscan S5 (native,SPI)
- Image format support ...
- DICOM 3 offline file format (draft Part 10).
- Parsing/validate DICOM modules and IODs.
- Pbmplus extended 16 bit raw format.
- Raw binary images.
- Archive retrieval from ...
- Generic extract 9-track and DAT.
- GE CT 9800 9-track.
- GE Genesis DAT.
- Philips Gyroscan MR S5 ANSI tapes.
- Miscellaneous image format utilities ...
- Dump.
- Patch.
- Swap bytes.
- Word to byte shift.
- Extract 12 bit packed data.
- Guess unknown image parameters.
- Vax VMS DUMP output to binary.
- DICOM data dictionary:
- From NIH ftp://zippy.nimh.nih.gov/pub/nih-image
- /documents/dicom-dict.txt
- In dicom3tools_*.tar.gz
- ftp://ftp.rahul.net/pub/dclunie
- http://www.rahul.net/dclunie
- DICOM draft standards:
- ftp://ftp.xray.hmc.psu.edu/dicom_docs
- ftp://ftp.uni-oldenburg.de/pub/dicom/dicom_docs
- DICOM RSNA demonstration software:
Contact smm@wuerl.wustl.edu (Steve Moore)
- ftp://wuerlim.wustl.edu/pub/dicom
- ftp://ftp.xray.hmc.psu.edu/dicom_software
- /Mallinckrodt
Mallinkrodt RSNA
- /European
European CEN/TC251/WG4
- ftp://ftp.uni-oldenburg.de/pub/dicom/dicom_software
- Linux port of Mallinckrodt CTN software
- From ftp://ss10.numed.szote.u-szeged.hu/pub/MIR-CTN/
- Modified sources /Linux/CTN.Linux.tar.Z
- Compiled binaries /Linux/CTN.Linux.bin.tar.Z
- Ported by boti@ss10.numed.szote.u-szeged.hu
- DICOM sample images:
- ftp://wuerlim.wustl.edu/pub/dicom/images/version3
- In the Mallinckrodt software, there are a few sample
images ... look in:
- apps/simple_storage/D19051502.9
- apps/simple_storage/D19051513.9
(contain images, but are ACR/NEMA 2 and missing lots
of required type 1 and 2 attributes)
same in:
- apps/send_image
- apps/move_image
also:
- apps/displays/TEST_IMAGES/baby.color.img
(contains image, but is not legal DICOM 3 (no UID's))
- apps/displays/TEST_IMAGES/ct1.1
(valid DICOM 3 CT IOD (passes Mallinckrodt dcm_verify))
- ftp://ftp.med.ge.com/pub/DICOM
- http://www.xray.hmc.psu.edu/public/med_img_dbs.html
- Dr. Razz - image viewer for MAC:
- ftp://ftp.u.washington.edu/pub/user-supported/razz
- ftp://ftp.u.washington.edu/public/razz
- http://www.rad.washington.edu/
The author (Thurman Gillespy tg3@u.washington.edu) writes:
Dr Razz is a 16 bit medical image display and analysis
program for Macintosh computers. Dr Razz can window and
level on full 16 bit image data in near real time on any
Macintosh color computer. Images can be viewed individually,
or an image series can be viewed in an image stack. The
program attempts to automatically open CT and MRI images,
and can usually handle different header sizes and byte order.
The program can directly read the headers of images created
with the GE Image Extract Tool, and can automatically handle
compressed images created with this utility. Dr Razz is not a
DICOM viewer, although it can probably automatically open many
CT/MRI DICOM images if they are not compressed. An option for
manually entering image parameters for problem files is
available. Images can be saved as PICT files, and TIFF support
will be added.
- FITS (Flexible Image Transport System) for astronomical data:
- ftp://fits.cv.nrao.edu/fits
- ftp://nssdca.gsfc.nasa.gov/FITS
- Graphics file formats (gif,tiff,etc.)
- ftp://zamenhof.cs.rice.edu/pub/graphics.formats
- Hierarchical Database Management System (astronomy images):
- ftp://starlink-ftp.rl.ac.uk/pub/doc/star-docs/sun92.tex
- http://star-www.rl.ac.uk/
- Interfile Interfile sources - see Nucmed ftp site at UWO.
- JPEG Sources
- PVRG-JPEG CODEC:
ftp://havefun.stanford.edu/pub/jpeg
Supports
- sequential DCT baseline,
- lossless modes.
- IJG:
ftp.uu.net/graphics/jpeg
Supports
- sequential DCT baseline,
- 12 bit DCT modes.
- Kermit distribution:
- ftp://ftp.cc.columbia.edu/kermit
- LUNIS - Loyola University Nuclear Medicine Information System
- http://147.126.104.3/
contact jhalama@lunis.nucmed.luc.edu (Jim Halama) for
access, which is restricted ((708) 216-3777)
- Medical imaging research (University of Leeds):
- http://agora.leeds.ac.uk/comir/comir.html
- Medical Informatics standards, including HL7:
- ftp://dumccss.mc.duke.edu/standards
- read-me.txt
- HL7/pubs/version2.2/ballot1.zip
- Neuroscience Resources List:
- http://golgi.harvard.edu/biopages/neuro.html
- NIH Image - Macintosh image processing software:
- ftp://zippy.nimh.nih.gov/pub/nih-image
- PACS - EurIPACS:
- http://www.rad.unipi.it:7080/
- /works/imphone/presentation-imphone.html
- Papyrus and Osiris ftp site:
- ftp://expasy.hcuge.ch/pub/Osiris
- Papyrus specifications for versions 2.1 and 3.
- Osiris for Mac, PC and Unix (SunOS, Solaris, Dec).
- Sample images for Dicom, Papyrus 2 and Papyrus 2.
- http://expasy.hcuge.ch/www/UIN/UIN.html
- Nucmed ftp site at UWO (run by Trevor Cradduck (cradduck@uwo.ca)):
- ftp://uwovax.uwo.ca/PUB:[000000.NUCMED]
- Penn State Radiology Web Server:
- http://www.xray.hmc.psu.edu/
- PET:
- http://www-ipg.umds.ac.uk/pet/petcen.html
- Physics:
- http://www.physics.mcgill.ca/physics-services/
- http://tph.tuwien.ac.at/physics-services/
- Qsh by Qsh ftp site:
- ftp://nucmed.med.nyu.edu/pub
- /dist
compressed tar
- /qsh
source
- Radiological Society of North America - On-Line Sources:
- http://www.rsna.org
- http://www.rsna.org/edu/internet.html
- Radiology History:
- http://www.fh-wuerzburg.de/roentgen/
- Sample mammogram images:
- miasdb@icr.ac.uk (J.Suckling) (Normal and abnormal)
- ftp://ftp.xray.hmc.psu.edu/mammo (10 Normal)
- http://www.xray.hmc.psu.edu/
- Sample medical images (may be out of date):
- ftp://fokus.uke.uni-hamburg.de/.voxelman.images
- ftp://rwja.umdnj.edu/pub
- gopher://gopher.austin.unimelb.edu.au/11/images/petimages/
- ftp.nihon-u.ac.jp/pub/data/MRIMonkeyHead
- http://ftp.nc.nihon-u.ac.jp/pub/data/MRIMonkeyHead
- ftp://decaf.stanford.edu/pub/images/medical/mri
- ftp://eedsp.gatech.edu/database/images/wchung/medical
- ftp://omicron.cs.unc.edu/pub/softlab/CHVRTD
- http://foyt.indyrad.iupui.edu/medres/iurad2.html
- ftp://ccsun.unicamp.br
- ftp://boris.umds.ac.uk/pub/images
- http://www-ipg.umds.ac.uk/
- University of Washington Teaching File (mrich@u.washington.edu):
- http://www.rad.washington.edu/
1. Radiology Teaching File (CME credit)
2. Anatomy Teaching Modules
3. Radiology Exhibits from UW
4. Information on UW radiology residency/fellowship programs
5. Image processing software written by UW faculty
- University of Western Ontario Teaching File:
- http://johns.largnet.uwo.ca
- Vax help - "The Vax Book" by Joseph E St Sauver, U of Oregon:
- ftp://decoy.uoregon.edu
- Visible Human Project
- http://www.nlm.nih.gov/
- /factsheets.dir/visible_human.html
- /extramural_research.dir/visible_gallery.html
Dr. Michael J. Ackerman
Project Officer, Visible Human Project
National Library of Medicine
8600 Rockville Pike
Bethesda, MD 20894
Need to sign an agreement with the NLM before one can
transfer the 15 GB of data or buy tapes.
Tape can be purchased from NTIS (301) 402-4100 in Unix
tar format for $1000.
- Wavelet compression software:
- ftp://pascal.math.yale.edu/pub/wavelets
- ftp://pascal.math.yale.edu/pub/software
- Window level software (12/16 bits ->8):
- ftp://alvin.ach.uams.edu/pub/winlev.tar.Z (Includes images)
- ftp://alvin.ach.uams.edu/pub/winlev-noimages.tar.gz
- Wxwin software:
- ftp://skye.aiai.ed.ac.uk/pub/wxwin
- Xsee - X-windows based display program for raw images:
- available from thurn@amadeus.ece.ucsb.edu (Stefan Thurnhofer)
The next part is part8 - information sources (continued).
Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news2.near.net!howland.reston.ans.net!news.sprintlink.net!news.clark.net!rahul.net!a2i!flash.us.com!flash.us.com!not-for-mail
From: dclunie@flash.us.com (David A. Clunie)
Newsgroups: alt.image.medical,comp.protocols.dicom,sci.data.formats,sci.med.informatics,sci.med.radiology,alt.answers,comp.answers,sci.answers,news.answers
Subject: Medical Image Format FAQ, Part 8/8
Followup-To: alt.image.medical
Date: 28 Mar 1995 23:04:03 +0300
Organization: Her Master's Voice
Lines: 349
Approved: news-answers-request@MIT.EDU
Distribution: world
Expires: 28 Apr 1995 00:00:00 GMT
Message-ID: <3l9q3j$dnf@flash.ksapax>
Reply-To: dclunie@flash.us.com (David A. Clunie)
NNTP-Posting-Host: flash.ksapax
Summary: This posting contains answers to the most Frequently Asked
Question on alt.image.medical - how do I convert from image
format X from vendor Y to something I can use ? In addition
it contains information about various standard formats.
Xref: senator-bedfellow.mit.edu alt.image.medical:2440 comp.protocols.dicom:641 sci.data.formats:891 sci.med.informatics:1734 sci.med.radiology:1812 alt.answers:8371 comp.answers:10928 sci.answers:2336 news.answers:40891
Archive-name: medical-image-faq/part8
Posting-Frequency: monthly
Last-modified: Sat Feb 18 16:42:58 GMT+0300 1995
Version: 2.02
7.6 Mailservers
- Ftpmail:
Ftpmail is a service provided by some extremely generous
sites that allow you to send ftp commands to them by email
and the server executes the commands and sends the results
back. Very few sites offer this because of the huge load
and potential for abuse. I only mention it here because a
lot of medical imaging people don't seem to have anonymous
ftp access.
To find out more, fetch the relevant FAQ from the mailserver
at "mail-server@rtfm.mit.edu" with a message body:
send usenet/news.answers/ftp-list/faq
The most commonly used site is "ftpmail@decwrl.dec.com" (send
"help" (no quotes) in the message body).
- HSPNET-L Hospital Computer Network Discussion Group and Data Base:
Run by Don Parsons dfp10%albnydh2.bitnet@uacsc2.albany.edu.
- To subscribe:
To: listserv%albnydh2.bitnet@uacsc2.albany.edu
Subject:
SUBSCRIBE HSPNET-L your_full_name
- For the monthly digest:
To: listserv%albnydh2.bitnet@uacsc2.albany.edu
Subject:
AFD ADD HSP* DIGEST HSPNET-L
- To contribute (if subscribed):
To: hspnet-l%albnydh2.bitnet@uacsc2.albany.edu
- To download from the LISTSERV Database:
To: listserv%albnydh2.bitnet@uacsc2.albany.edu
Subject:
INDEX HSPNET-L
GET <filename> <filetype>
HSPNET-L is mirrored by "sci.med.telemedicine" Usenet newsgroup.
- Interfile Interfile mailing list:
Don't know much about this list, but I am sure that
atoddpok@medphys.ucl.ac.uk (Andrew Todd-Pokropek) would
be able to fill you in on this.
- Medimagex list for medical image format discussions:
Precursor to "alt.image.medical" usenet news group. Now
essentially defunct. Maybe useful if you don't have
Usenet News access.
- command address: listserver@cs.columbia.edu
- commands: in message body not subject
- list name: MEDIMAGEX
- to get help: HELP and/or HELP LISTSERV
- to subscribe: SUBSCRIBE MEDIMAGEX firstname lastname
(NB. not your email address, that is
derived from the 'From ' header line)
- to unsubscribe: UNSUBSCRIBE MEDIMAGEX
- to send to list: medimagex@cs.columbia.edu
- Nucmed mailing list for medical physicists:
- to subscribe: nucmed-request@irus.rri.uwo.ca
- to unsubscribe, etc.: nucmed-owner@irus.rri.uwo.ca
- to send to list: nucmed@uwo.ca
- the relevant human: cradduck@uwo.ca (Trevor Cradduck)
This list is not actually gated to "sci.med.physics",
though Trevor often reposts significant items.
See also Nucmed ftp site at UWO.
- Radiation Safety Distribution list:
For Health Physicists, Medical Physicists, Radiological
Engineers and others who have a professional interest in
matters related to Radiation Protection.
RADSAFE@romulus.ehs.uiuc.edu
- Radiologic Science Discussion Group - Radsci-L:
Discussion may choose to center around radiologic science
education, medical radiography, CT (computerized scanning),
MRI (magnetic resonance scanning), sonography, nuclear
medicine, radiation oncology, veterinary medicine, industrial
applications, radiologic patient care, etc.
- command address: mailserv@western.tec.wi.us
- commands: in message body not subject
- list name: Radsci-L
- to subscribe: subscribe Radsci-L firstname lastname
(NB. not your email address, that is
derived from the 'From ' header line)
- sci.med.radiology gateway:
sci.med.radiology@news.cs.indiana.edu
7.7 References
- DICOM - Directory of Resources:
"DICOM Tools for End User Applications
and System Integration"
Presented at EuroPACS'94 Geneva Switzerland
Dwight Simon
Merge Technologies, Inc.
1126 S. 70th St. Suite N508B
Milwaukee, Wisconsin 53214-3151
phone 414-475-4300
fax 414-475-3940
email dwight@merge.com (Dwight Simon)
- DICOM - General:
Kodak "Understanding DICOM 3.0" for $US 12.50 (no credit cards)
Angie Helms
Kodak Health Imaging Systems
18325 Waterview Parkway
Dallas TX 75252
phone 1-800-767-3448
- DICOM - Implementation:
"Implementation of the DICOM 3.0 Standard
- A Pragmatic Handbook"
Robert Hindel, Editor
RH Consulting
483 Ridge Road
Orange CT 06477-2830
phone 203-799-2258
fax 203-795-8640
email 73030.1366@compuserve.com (Robert Hindel)
Radiological Society of North America
2021 Spring Road Suite 600
Oak Brook IL 60521
- PACS:
Understanding PACS:Picture Archiving & Communications Systems
available for $5 from:
SCAR, Society for Computer Applications in Radiology
4750 Lindle Road,
P.O. Box 8800
Harrisburg, PA 17105-8800
phone 717-561-5266
- Telemedicine:
Rural TeleHealth:Telemedicine,Distance Education &
Informatics for Rural Health Care, A Report of the Office
of Rural Health Policy Health Resources and Services
Administration, DHSS (Nov,1993)
available for $8 from:
WICHE Publications
Western Interstate Commission for Higher Education
P.O. Drawer P
Boulder, CO 80301-9752
phone (303) 541-0290
fax (303) 541-0291
- Wavelet compression:
Press, et al. Numerical Recipes in C.
Chapter 13.10. Wavelet Transforms.
Cody,MA. The Wavelet Packet Transform.
Dr. Dobb's Journal, April '94
7.8 Organizations and Societies
- IEEE Transactions on Medical Imaging
Mike Vannier
Mallinckrodt Institute of Radiology
Washington University Medical Center
510 South Kingshighway Blvd.
St. Louis, MO 63110
- Society for Computer Applications in Radiology
4750 Lindle Road,
P.O. Box 8800
Harrisburg, PA 17105-8800
phone 717-561-5266
email 73531.1173@compuserve.com
email tg3@u.washington.edu (Thurman Gillespy).
- Web server is at http://www.scar.rad.washington.edu/
- Official journal is the "Journal of Digital Imaging".
- Last meeting was S/CAR'94 held in Winston-Salem,
North Carolina during June 1994.
- (membership is considered mandatory for FAQ readers :) )
7.9 Usenet Newsgroups
- alt.graphics.pixutils
- alt.image.medical
- alt.med.equipment
- comp.graphics
- comp.graphics.algorithms
- comp.graphics.pixutils
- comp.graphics.research
- comp.protocols.dicom
- sci.data.formats
- sci.med.emergency
- sci.med.informatics
- sci.med.physics
- sci.med.radiology
- sci.med.telemedicine
- sci.med.vision
8. Acknowledgements
Thanks to the following people for contributions, general help, interesting
postings or mail whose contents have found there way in here, or just plain old
moral support. If I have inadvertently omitted anyone, sorry !
- <axagarwa@seldon.cs.twsu.edu>
- <clp@acs.bu.edu>
- Aaron Davis <Aaron_Davis@iucc.iupui.edu>
- Alan Rowberg <rowberg@u.washington.edu>
- Allen Rueter <allen@wuerl.WUstl.EDU>
- Alvis D. Harding Jr <adh@george.ach.uams.edu>
- Andreas Bittorf <Andreas.Bittorf@derma.med.uni-erlangen.de>
- Andreas Pommert <pommert@uke.uni-hamburg.de>
- Andrei Cornoiu <cornoiu@monu1.cc.monash.edu.au>
- Andrew ToddPokropek <a.todd@ucl.ac.uk>
- Andy Hewett <Andy.Hewett@informatik.uni-oldenburg.de>
- Bob Dempsey <dempsey@metronet.com>
- Bob Manich <rdm@wdl.loral.com>
- Botond K. Szabo <boti@ss10.numed.szote.u-szeged.hu>
- Bud Wendt <rwendt@bcm.tmc.edu>
- C.B.Stone <cbs@khis.com>
- CC Yau <ccyau@iohk.com>
- Charles Bird <cb@xerxes.umds.ac.uk>
- Christoph Ozdoba <ozdoba@insel.unibe.ch>
- Chuck Batishko <cr_batishko@pnl.gov>
- Craig D. von Land <craig@care3.uab.es>
- David P Reddy <reddy@nucmed.med.nyu.edu>
- David S. Channin <dsc@xray.hmc.psu.edu>
- Derek Hill <D.Hill@umds.ac.uk>
- Dick St.Peters <stpeters@NetHeaven.com>
- Dick St.Peters <stpeters@dawn.crd.ge.com>
- Don Parsons <dfp10%albnydh2.bitnet@uacsc2.albany.edu>
- Donald Van Syckle <vansyckled@med.ge.com>
- Dwight Simon <dwight@merge.com>
- Edward Gosfield <gosfield@udcemail.udc.upenn.edu>
- Eric John Finegan <efinegan@dejarnette.com>
- Fred W. Prior <prior@xray.hmc.psu.edu>
- George Foutrakis <georgef@server1.usa>
- Gerald Q. Maguire <maguire@it.kth.se>
- Gerrit Visser <gerrit@isgtec.com>
- Greg Gibbs <ggibbs@csn.net>
- Guillaume Thelissen <Guillaume.Thelissen@RAD.RULIMBURG.NL>
- Gunther Nowotny <gnowotny@tph23.tuwien.ac.at>
- Herve Delingette <hdeling@hippocrate.inria.fr>
- Hugh Lyshkow <daccess@interaccess.com>
- Irene Gearin <ireneg@isgtec.com>
- James Harrison <james@hplb.hpl.hp.com>
- Jeff Paynowski <paynowsk@ct.picker.com>
- Jeff Wade <wade@kegs.saic.com>
- Jeffrey Siegel <jsiegel@lunis.nucmed.luc.edu>
- Jerry McCarthy <ab003@freenet.HSC.Colorado.EDU>
- Jim Berilla <jb@falstaff.MAE.cwru.edu>
- Jim Swan <jim@swanmed.com>
- Joe Shapiro <joe@consolve.com>
- Joel Davis <jdavis@iea.com>
- John A. Hansen <jahansen@halcyon.halcyon.com>
- John Clayton <clayton@c-c.com>
- John Hearns <johnh@gerbil.umds.ac.uk>
- John L. Groezinger <jlgroezinger@mmm.com>
- John Meissner <meissnerj@med.ge.com>
- K Schulze <kschulze@aol.com>
- Keith Robison <robison@nucleus.harvard.edu>
- Kevin Montgomery <kevin@biocomp.arc.nasa.gov>
- Krishna Iyer <iyer@mipg.upenn.edu>
- Lasse Jyrkinen <ljj@stekt16.oulu.fi>
- Marilyn E Noz <noz@nucmed.NYU.EDU>
- Mark Dinkes <mdinkes@delphi.com>
- Mark Perloe <mperloe@mindspring.com>
- Martin Liversage <operator@iris.kth.dk>
- Matthew T. Adams <mtadams@columbine.hsc.colorado.edu>
- Matti Haveri <mhaveri@cc.oulu.fi>
- Michael P. McIntyre <mikey@lobby.ti.com>
- Michael Richardson <mrich@u.washington.edu>
- Nathan A. Harris <nharris@dba-sys.com>
- Neil Weisenfeld <weisen@alw.nih.gov>
- Nick Efford <nde@dcre.leeds.ac.uk>
- Pat Wallace <ptw@rlsaxp.bnsc.rl.ac.uk>
- Paul Malloy <Paul_Malloy@brown.edu>
- Paul Morgan <ppxpsm@unicorn.ccc.nottingham.ac.uk>
- Paul Mullen <mullenp@delphi.com>
- Peter Hall <Peter.Hall@comp.vuw.ac.nz>
- Peter Hallett <peter@rsinc.com>
- Peter Jurgensen <pju@vision.auc.dk>
- Peter Neelin <neelin@pet.mni.mcgill.ca>
- Phil Pillet <eng48bxny@aol.com>
- Phillip Berman <compumed@indirect.com>
- R. Krishnamurthy <rk@cedar.Buffalo.EDU>
- Rafael Pous <pous@gaig.upc.es>
- Rex Harmon <indexrex@aol.com>
- Richard R Carlton <rcarlton@magnus.acs.ohio-state.edu>
- Robert Hindel <73030.1366@compuserve.com>
- Roch Comeau <roch@nil.mni.mcgill.ca>
- Rutie Adar <rutie@asp.co.il>
- Scott M Metzger <smetzger@harp.aix.calpoly.edu>
- Shigeru Muraki <muraki@etl.go.jp>
- Steve Moore <smm@wuerl.wustl.edu>
- Thurman Gillespy <tg3@u.washington.edu>
- Tom Lane <tgl@netcom.com>
- Tracy N. Tipping <tipping@phys.ksu.edu>
- Trevor Cradduck <cradduck@irus.rri.uwo.ca>
- Tunc Iyriboz <iyriboz@dialup.francenet.fr>
- Varun Mitroo <mitroo@magnus.acs.ohio-state.edu>
- Wayne Rasband <wayne@helix.nih.gov>
- Yuichi Kimura <kimura@cit.nihon-u.ac.jp>
The next part is index by keyword.